2
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;
    }
}

それは大丈夫です。「ベース」または「これ」は、別のケースまたはその他を指していると思います。

なぜ、何が起こったのか誰が教えてくれますか? 理論は何ですか?ありがとう。

4

1 に答える 1