0
如何,使用反射,在應用程序域創建委託的實例?在一個AppDomain中創建一個委託
我有一個C++/CLI DLL從中我動態加載C#DLL。由於C#DLL位於網絡共享上,我將它加載到單獨的AppDomain中(其中PermissionSet是PermissionState.Unrestricted)。
AppDomain^ appDomain = AppDomain::CreateDomain(...);
Object^ obj = appDomain->CreateInstanceAndUnwrap(
assemblyName,
"MyNamespace.MyClass",
false, // ignoreCase
BindingFlags::CreateInstance | BindingFlags::Public | BindingFlags::Instance,
nullptr, // binder
args, // constructor arguments
nullptr, // culture
nullptr); // activationAttributes
然而,以同樣的方式創建委託時:
此創建班級時工作正常
array<Object^>^ args = gcnew array<Object^>(1);
args[0] = MyFunctionThatIWantTheDelegateToWrap;
Object^ obj = appDomain->CreateInstanceAndUnwrap(
assemblyName,
"MyNamespace.MyDelegate",
false, // ignoreCase
BindingFlags::CreateInstance | BindingFlags::Public | BindingFlags::Instance,
nullptr, // binder
args, // constructor arguments
nullptr, // culture
nullptr); // activationAttributes
我得到的錯誤:
Unhandled Exception: System.MissingMethodException: Constructor on type 'MyNamespace.MyDelegate' not found.
所以我假設我無法使用CreateInstanceAndUnwrap()
創建代理的實例。所以我的問題是,我如何創建一個?
在你不知道的情況下,這裏是委託定義:
namespace MyNamespace
{
public delegate string MyDelegate(int fieldId, int size);
}