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 を使用しない場合は、次のような一般的な 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;
}
}
それは大丈夫です。「ベース」または「これ」は、別のケースまたはその他を指していると思います。
なぜ、何が起こったのか誰が教えてくれますか? 理論は何ですか?ありがとう。