Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme avec Activator.CreateInstance

3 réponses
Avatar
julien
Bonjour,
J'essaye de tester une classe priv=E9e avec Nunit. Voici une partie du=20
code de l'un des tests:

Assembly asm =3D Assembly.LoadFrom("Platine.exe");
Type typeAssembly =3D asm.GetType("Platine.Core.Core");
object core =3D Activator.CreateInstance(typeAssembly);

J'obtiens l'erreur suivante:

[nunit2] Tests run: 1, Failures: 1, Not run: 0, Time: 0,71875 seconds
[nunit2]
[nunit2] Failures:
[nunit2] 1) NUnit.Tests.TestCore.Dependencies :=20
System.MissingMethodException : Aucun constructeur sans param=E8tre d=E9f=
ini=20
pour cet objet.
[nunit2] at System.RuntimeType.CreateInstanceImpl(Boolean publicOnly)
[nunit2] at System.Activator.CreateInstance(Type type, Boolean nonPubl=
ic)
[nunit2] at NUnit.Tests.TestCore.Dependencies()

Cette erreur correspond =E0 la ligne "object core =3D=20
Activator.CreateInstance(typeAssembly);"

Pourtant, la m=E9thode CreateInstance(Type) existe bien. J'ai =E9galement=
=20
essay=E9 Activator.CreateInstance(typeAssembly, true) mais j'obtiens le m=
e=20
message d'erreur.

Une recherche sur internet ne m'a pas aid=E9. J'ai essay=E9 des variation=
s=20
autour de ce code, sans changement.

Un id=E9e?

Merci
Julien

3 réponses

Avatar
Zoury
Salut Julien ! :O)

System.MissingMethodException :
Aucun constructeur sans paramètre défini pour cet objet.

Activator.CreateInstance(typeAssembly);"



Il semblerait que tu n'est pas définie de constructeur sans paramètre dans
la classe Core. :
//***
private void Core() {};
//***

étant donnée que tu ne passes pas de paramètre à CreateInstance() pour la
construction de l'objet ce dernier plante car il ne trouve pas de signature
correspondante (d'où la MissingMethodException).

--
Cordialement
Yanick
MVP pour Visual Basic
Avatar
Zim
Zoury a écrit :
Salut Julien ! :O)


System.MissingMethodException :
Aucun constructeur sans paramètre défini pour cet objet.

Activator.CreateInstance(typeAssembly);"




Il semblerait que tu n'est pas définie de constructeur sans paramètre dans
la classe Core. :
//***
private void Core() {};
//***

étant donnée que tu ne passes pas de paramètre à CreateInstance() pour la
construction de l'objet ce dernier plante car il ne trouve pas de signature
correspondante (d'où la MissingMethodException).




Effectivement, la classe Core ne doit pas posséder de constructeur par
défaut.
Il est toutefois possible d'instancier une classe selon un constructeur
défini via la classe ConstructorInfo et sa méthode Invoke().

Cordialement,

Zim.
Avatar
julien
Zim a écrit :
Zoury a écrit :

Salut Julien ! :O)


System.MissingMethodException :
Aucun constructeur sans paramètre défini pour cet objet.

Activator.CreateInstance(typeAssembly);"





Il semblerait que tu n'est pas définie de constructeur sans paramè tre
dans
la classe Core. :
//***
private void Core() {};
//***

étant donnée que tu ne passes pas de paramètre à CreateInstanc e() pour la
construction de l'objet ce dernier plante car il ne trouve pas de
signature
correspondante (d'où la MissingMethodException).




Effectivement, la classe Core ne doit pas posséder de constructeur pa r
défaut.
Il est toutefois possible d'instancier une classe selon un constructeur
défini via la classe ConstructorInfo et sa méthode Invoke().

Cordialement,

Zim.
<target ...>
<nunit...>
<formatter ...>
<test ...>
<test ...>
</nunit>
</target>




Merci beaucoup.
J'aurais du lire plus attentivement, j'ai compris "Aucune méthode sans
paramètre défini pour cet objet" au li de constructeur :-(

Julien