Estoy tratando de manejar una llamada de un método genérico a través de un RealProxy
, pero parece que no puedo encontrar la información sobre el tipo real del parámetro genérico utilizado en la llamada al método interceptado. Un extracto del código:C# RealProxy: métodos genéricos?
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);
...
Digamos que estoy proxy a una interfaz como
interface IFactory
{
TService Create<TService>()
}
Cuando llamo el proxy
proxied.Create<MyClass>()
Quiero ser capaz de averiguar la parámetro genérico es del tipo MyClass
. ¿Es esto posible a través del RealProxy
?
Es posible a través de la reflexión para consultar tipos genéricos. – fhj
Intentar averiguar la clase genérica exacta en cierto modo frustra el propósito de tener una clase genérica. ¿Por qué necesitas saber la clase? –
@Albin, estoy escribiendo un proxy de método de fábrica para un marco de inyección de dependencia en el que estoy trabajando. Algo parecido a las instalaciones de fábrica mecanografiadas de Windsor (http://kozmic.pl/archive/2009/12/24/castle-typed-factory-facility-reborn.aspx) –