-1

すぐにいくつかのコードをお見せしましょう:

class MyClass {

    public MyClass(Customer c) {
        ExtractRoot(() => c.FirstName);
    }
}

ExtractRootパラメータとしてa を受け入れてExpression<Func<object>>います。

式ツリーから顧客オブジェクト 'c' を抽出しようとしています。私はそれをメソッドに渡しています。顧客オブジェクトを表すExtractRootを取得する方法を知っています。ConstantExpressionしかし、ToString()そのオブジェクトを呼び出すと、次のように出力されます:
MyAssemblyName.CustomNamespace.MyClass+<>c__DisplayClass2

これが何を意味するのか、なぜ顧客のToString()メソッドが呼び出されないのか、誰かが説明してもらえますか?

最後に、実際の顧客オブジェクト、または式のルートを取得するにはどうすればよいでしょうか?

4

1 に答える 1

0

私は2つの部分からなる私の答えに対する完全な解決策を見つけました:

  1. DisplayClass を使用する理由とその意味については、次の質問への回答を参照してください:ラムダを呼び出すときの「DisplayClass」名の意味は何ですか?
  2. 式の実際のルートを取得する方法(ちなみにこれは可能です)は、この質問の回答: Getting the object out of a MemberExpression にあります。
于 2013-07-29T11:46:57.823 に答える