我正在尝试使用反射在 AppDomain 中执行一些代码。这是我的代码:
AppDomain appDomain = GetSomehowAppDomain();
string typeAssembly = GetTypeAssembly();
string typeName = GetTypeName();
object targetObject = appDomain.CreateInstanceAndUnwrap(typeAssembly, typeName);
MethodInfo methodInfo = targetObject.GetType().GetMethod(methodName);
object result = methodInfo.Invoke(targetObject, methodParams);
当此代码在网站下运行时,一切正常。但是,当我从调用 WCF 服务的控制台应用程序中执行此操作时,它会尝试调用上述代码 -methodInfo
是null
,我正在NullReferenceException
最后一行。
顺便说一句targetObject
,是System.Runtime.Remoting.Proxies.__TransparentProxy
类型,我假设如果它在 GoF 模式中代理意味着我可以访问类型的成员,这是用于代理的原始来源。但targetObject
没有typeName
类型的成员。
使用targetObject.GetType().GetMethods()
我发现它有 7 种方法:
- 获取终身服务
- 初始化生命周期服务
- 创建对象引用
- 字符串
- 等于
- 获取哈希码
- 获取类型
targetObject
预计将成为WorkflowManager
类型的代理。
public class WorkflowsManager : MarshalByRefObject, ISerializable, IDisposable, IWorkflowManager