class Program
{
static void Main(string[] args)
{
var t = new TestImpl();
Console.WriteLine(t.Test(TestEnum.Value));
}
}
public class AbstractTest<T> where T:new()
{
public virtual T TestBase(TestEnum v)
{
return new T();
}
}
public class Product
{
public int Id { get; set; }
}
public enum TestEnum
{
Value
}
public class TestImpl : AbstractTest<Product>
{
public int Test(TestEnum ev)
{
Func<int> f = () =>
{
var result = base.TestBase(ev);
return result.Id;
};
return f();
}
}
大家好:
我有类似代码的问题(在.net4.0 上运行)。
它将抛出异常:尝试加载格式不正确的程序。(来自 HRESULT 的异常:0x8007000B)
if make " var result = base.TestBase(ev);" 更改为“ var result = this.TestBase(ev);” 这将是正常的。如果不使用 lambda func ,请像这样使用 common func:
public class TestImpl : AbstractTest<Product>
{
public int Test(TestEnum ev)
{
Func<int> f = () =>
{
//var result = base.TestBase(ev);
// return result.Id;
return TestResult(ev);
};
return f();
}
private int TestResult(TestEnum ev)
{
var result = base.TestBase(ev);
return result.Id;
}
}
那没问题。我认为是“基础”或“这个”指向不同的案例或其他。
谁能告诉我为什么以及发生了什么?理论是什么?谢谢。