J'essaie de consommer un service de repos wcf par réflexion si possible. Jetez un oeil sur le code ci-dessous:Consommation .net wcf service de repos par réflexion
public static object WCFRestClient<T>(string method, string uri, params object[] args)
{
object o;
object ret;
using (ChannelFactory<T> cf = new ChannelFactory<T>(new WebHttpBinding(), uri))
{
T contract = cf.CreateChannel();
ret = contract.GetType().GetMethod(method).Invoke(o, args);
}
return ret;
}
Comme vous le voyez, il est une méthode générique qui prend T au moment de l'exécution ... mon problème est, je ne sais pas si je peux vraiment réfléchir sur l'objet de canal I Je crée ci-dessus .... Disons que je fais, alors le problème commence quand je veux créer une instance d'objet ... Depuis je ne peux pas créer une instance d'objet à partir d'une interface ...
Je voudrais aussi être heureux d'entendre s'il existe un autre moyen d'accomplir cela? Mais je préfère utiliser le mécanisme de canal si je peux.
Ive essayé votre approche, mais maintenant j'obtiens l'erreur System.Reflection.TargetInvocationException: Exception a été levée par la cible d'un appel. ---> System.InvalidOperationException: L'adressage manuel est activé sur cette usine, donc tous les messages envoyés doivent être pré-adressés. – theKing
Je pense que vous devez ajouter le WebHttpBehavior à votre usine: factory.Endpoint.Behaviors.Add (new WebHttpBehavior()); – bobbymcr
Yess !!, merci travaux. merci beaucoup – theKing