J'ai écrit les services Web dynamiques pour SOAP et REST. Vous devez maintenant créer des services Web OData dont les opérations renvoient l'interface IQueryable conformément aux spécifications du service de données WCF. Je crée une méthode dynamique basée sur des instructions IL Emit. Mais je ne suis pas en mesure d'affecter le type de retour à MethodBuilder qui est IQueryable. Pour être spécifique, je ne suis pas en mesure de définir le paramètre de retour à l'aide de la méthode MethodBuilder.SetReturnType lorsque le type de retour IQueryable est généré au moment de l'exécution. Est-ce que quelqu'un peut me fournir l'impression bleue de la génération de méthode dans le code d'émission IL?Création d'une méthode dynamique à l'aide de CIL MethodBuilder avec IQueryable <DynamicType> return type
-1
A
Répondre
2
Pour créer un type générique contenant des paramètres de type inconnus jusqu'à l'exécution, vous devez utiliser la méthode Type.MakeGenericType. Votre code pourrait ressembler à ceci:
//get the dynamic type from somewhere
Type unknownType = ...;
//get open generic base type
Type openGeneric = typeof(IQueryable<>);
//create closed generic type with the unknown type as generic type parameter
Type closedGeneric = openGeneric.MakeGenericType(unknownType);
//use the closed type for whatever you want
Type returnType = closedGeneric;
double possible de [Méthode dynamique à l'aide MethodBuilder avec le type IQueryable de retour] (http://stackoverflow.com/questions/42654679/dynamic-method-using-methodbuilder-with- iqueryabledynamictype-return-type) –
thehennyy
S'il vous plaît annuler la downvote .. je ne peux pas poser de nouvelles questions .. J'ai supprimé mon message original – badari
Je n'ai pas voté. En tout cas malade poser la même question ici encore. Qu'est-ce qui n'est toujours pas clair? Vous devez juste passer votre objet type comme seul paramètre à la méthode SetReturnType. – thehennyy