List<AnonymousObject>
なぜ aを a にキャストできないのでしょうかList<dynamic>
? 次のコードがあります:
var datasource = someList.Select(o => new { x = o.A, y = o.B });
dgvSomeGridView.DataSource = datasource.ToList();
dgvSomeGridView.DataBind();
GridView.DataSource
次に、次のコードでアクセスします。
var ds = ((List<dynamic>)dgvSomeGridView.DataSource);
....
しかし、それを にキャストした行でエラーが発生しますList<dynamic>
。次のように表示されます。
System.Collections.Generic.List'1[<>f__AnonymousType0'8[System.Int32,System.String]]
型のオブジェクトを型にキャストできませんSystem.Collections.Generic.List'1[System.Object]
。
匿名型のリストを にキャストできないのはなぜですかdynamic
、またはエラーが示すようにobject
型にキャストできないのはなぜですか? どうすればこれを解決できますか?
私のコードは C#、フレームワーク 4.0、VS2010 Pro でビルドされ、プラットフォームは ASP.NET です。
助けてください、よろしくお願いします。
ベストアンサー1
はList<T>
共変ではなく不変なので、キャストIEnumerable<dynamic>
共変をサポートする:
var ds = ((IEnumerable<dynamic>)dgvSomeGridView.DataSource).ToList();
多くのための共変に関する情報