J'essaie de gérer un appel d'une méthode générique à travers un RealProxy
, mais je n'arrive pas à trouver les informations sur le type réel du paramètre générique utilisé dans l'appel de méthode intercepté. Un extrait du code:C# RealProxy: méthodes génériques?
public override IMessage Invoke(IMessage msg)
{
...
string methodName = (string)msg.Properties["__MethodName"];
Type[] parameterTypes = (Type[])msg.Properties["__MethodSignature"];
object[] args = (object[])msg.Properties["__Args"];
MethodInfo method = typeToProxy.GetMethod(methodName, parameterTypes);
...
Disons que je suis mandatement une interface comme
interface IFactory
{
TService Create<TService>()
}
Quand j'appelle le proxy
proxied.Create<MyClass>()
Je veux être en mesure de trouver la le paramètre générique est de type MyClass
. Est-ce possible grâce à RealProxy
?
Il est possible par réflexion pour interroger les types génériques. – fhj
Essayer de trouver la classe générique exacte va un peu à l'encontre du but d'avoir une classe générique. Pourquoi avez-vous besoin de connaître la classe? –
@Albin, j'écris un proxy de méthode d'usine pour un cadre d'injection de dépendance sur lequel je travaille. Quelque chose comme installation d'usine typée de Windsor (http://kozmic.pl/archive/2009/12/24/castle-typed-factory-facility-reborn.aspx) –