1. ホーム
  2. c#

[解決済み] 拡張方法とダイナミックオブジェクト

2023-01-28 19:51:21

質問

私の問題を次のようなコードにまとめます。

List<int> list = new List<int>() { 5, 56, 2, 4, 63, 2 };
Console.WriteLine(list.First());

上記のコードは正常に動作しています。

今度は以下を試してみました。

dynamic dList = list;
 Console.WriteLine(dList.First());

が、RuntimeBinderExceptionが発生するのですが、なぜでしょうか?

どのように解決するのですか?

Stecyaの回答を展開すると...拡張メソッドは動的型付けでサポートされていません。 を拡張メソッドの形で つまり、インスタンスメソッドであるかのように呼び出されます。しかし、これは動作します。

dynamic dList = list;
Console.WriteLine(Enumerable.First(dList));

もちろん、それは役に立つかもしれませんし、立たないかもしれません。動的型付けを使おうとしている理由と方法についてもっと情報をいただければ、もっとお役に立てるかもしれません。