bra*_*ave 5 c# generics appdomain
我对AppDomain.DoCallBack()和泛型类型有一个奇怪的问题:
static void InvokeIsolated() {
AppDomain appDomain = AppDomain.CreateDomain("testDomain");
appDomain.DoCallBack(MyDoCallBack<string, string>); <-- ArgumentNullException!
}
static void MyDoCallBack<T, T1>() {}
Run Code Online (Sandbox Code Playgroud)
我得到一个带有消息的argumentnullexpcetion:当泛型类型相同时,"value不能为null".
如果我将docallback更改为:
appDomain.DoCallBack(MyDoCallBack<string, int>); <-- OK!
Run Code Online (Sandbox Code Playgroud)
这意味着如果泛型类型不同,则没有问题.
有什么问题或者这是一个.net错误?
更新:如果使用泛型类型调用lambda不是变通方法:
static void Foo()
{
InvokeIsolated<string, string>();
}
static void InvokeIsolated<T, T1>()
{
AppDomain appDomain = AppDomain.CreateDomain("testDomain");
appDomain.DoCallBack(() => MyDoCallBack<T, T1>()); //<--ArgumentNullException
}
static void MyDoCallBack<T, T1>() {}
Run Code Online (Sandbox Code Playgroud)
这是 .NET Remoting 基础架构中的一个错误。这是 .NET 内部代码的崩溃。
我没有好的解决方法。您可以使用表达式树编译非泛型包装函数。每组泛型类型参数都需要一个这样的 lambda。
| 归档时间: |
|
| 查看次数: |
96 次 |
| 最近记录: |