有一个很好的
MSDN article
关于RealProxy我建议你阅读。
MethodCallMessageWrapper
这就省去了你直接对付
Properties
字典。从后者你可以得到
MethodBase
,它又包含泛型参数:
internal class MyProxy : RealProxy
{
private object m_instance;
private MyProxy( object instance ) : base( typeof( IFactory) )
{
m_instance = instance;
}
public override IMessage Invoke( IMessage message )
{
IMethodCallMessage methodMessage =
new MethodCallMessageWrapper( (IMethodCallMessage) message );
// Obtain the actual method definition that is being called.
MethodBase method = methodMessage.MethodBase;
Type[] genericArgs = method.GetGenericArguments(); //This is what you want
return new ReturnMessage(...);
}
...
}