宣言されたスコープを超えた匿名型オブジェクトへのアクセス
C# では、匿名型はソースから抽出されたプロパティ名と値に基づいて動的に生成されます。ただし、これらのオブジェクトのスコープは、それらが宣言されているブロックに制限されます。ここで疑問が生じます: 宣言されたスコープ外の匿名型オブジェクトにどのようにアクセスできますか?
「例によるキャスト」の使用 (注意を推奨)
一般的には使用されていますが、推奨されませんが、「キャスト バイ サンプル」として知られる手法を使用すると、スコープを超えた匿名型オブジェクトにアクセスできます。このハックには、アクセスしたい匿名型と同じプロパティを持つ別の「サンプル」オブジェクトを作成することが含まれます。
実装:
public void FuncB() { var example = new { Id = 0, Name = string.Empty }; var obj = CastByExample(FuncA(), example); Console.WriteLine(obj.Name); } private object FuncA() { var a = from e in DB.Entities where e.Id == 1 select new { Id = e.Id, Name = e.Name }; return a.FirstOrDefault(); } private T CastByExample<T>(object target, T example) { return (T)target; }
注意事項:
要約すると、「例によるキャスト」を使用してスコープを超えた匿名型オブジェクトにアクセスすることは可能ですが、これは危険な行為であり、可能な限り避けるべきです。
以上がC# で宣言されたスコープ外の匿名型オブジェクトにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。