2010-03-24 6 views
0

Quelle fonction de surcharge Activator.CreateInstance appelle? J'ai un type retourné à partir de "Type proxyType = GetProxyType (typeContrat);" et le ConstructorInfo estQuelle fonction de surcharge Activator.CreateInstance appelle?

« [System.Reflection.RuntimeConstructorInfo] = {Void .ctor (System.ServiceModel.InstanceContext)} { de base System.Reflection.MemberInfo} = {Void .ctor (System.ServiceModel.InstanceContext) }

[System.Reflection.RuntimeConstructorInfo] = {Void .ctor (System.ServiceModel.InstanceContext, System.String)} base de {System.Reflection.MethodBase} = {Void .ctor (System.ServiceModel.InstanceContext, System.String)}

[System.Reflection.RuntimeConstructorInfo] = {Void .ctor (System.ServiceModel.InstanceContext, System.String, System.String)} socle {System.Reflection.MethodBase} = {Void .ctor (System.ServiceModel.InstanceContext, System.String, System.String)}

[System.Reflection.RuntimeConstructorInfo] = {Void .ctor (System.ServiceModel .InstanceContext, System.String, System.ServiceModel.EndpointAddress)} {base de System.Reflection.MethodBase} = {Void .ctor (System.ServiceModel.InstanceContext, System.String, System.ServiceModel.EndpointAddress)}

[System.Reflection.RuntimeConstructorInfo] = {Void .ctor (System.ServiceModel.InstanceContext, System.ServiceModel.Channels.Binding, System.ServiceModel.EndpointAddress)} de base {System.Reflection.MethodBase} = {Void .ctor (système .ServiceModel.InstanceContext, System.ServiceModel .Channels.Binding, System.ServiceModel.EndpointAddress)}.

Merci!

Répondre

0

Il semble que le type a un constructeur par défaut afin Activator.CreateInstance(proxyType); devrait fonctionner. Si vous voulez appeler un autre constructeur, par exemple celui qui prend un paramètre de chaîne que vous pouvez faire:

var instance = Activator.CreateInstance(proxyType, "some string parameter"); 

ou avec deux paramètres de chaîne:

var instance = Activator.CreateInstance(proxyType, "param1", "param2"); 

MISE À JOUR:

Mon erreur Il n'y a pas de constructeur sans paramètre pour ce type défini. Tous les constructeurs ont besoin d'au moins un argument de type InstanceContext. Donc, pour créer une instance de ce type, vous devrez passer au moins le contexte de l'instance. Par exemple, si vous êtes dans un WCF, vous pouvez essayer ceci:

var instance = Activator.CreateInstance(
    proxyType, 
    OperationContext.Current.InstanceContext 
); 
+0

Merci Darin. Je pensais que Activator.CreateInstance (proxyType) aussi. Mais il me lance "Aucun constructeur sans paramètre défini pour cet objet." rapport à la pile est System.RuntimeTypeHandle.CreateInstance (type RuntimeType, Boolean publicOnly, Boolean nocheck, Boolean & canBeCached, RuntimeMethodHandle & cteur, Boolean & bNeedSecurityCheck) à System.RuntimeType.CreateInstanceSlow (Boolean publicOnly, Boolean FillCache) à System.RuntimeType.CreateInstanceImpl (Boolean publicOnly, Boolean skipVisibilityChecks, Boolean fillCache) .... – Don

+0

S'il vous plaît voir ma mise à jour. –

+0

Darin, pouvons-nous obtenir un InstanceContext pour exécuter proxyType? OperationContext.Current.InstanceContext semble être celui qui exécute le service courant. – Don

Questions connexes