2

私はC#ダイナミックを理解しようとしています。動的変数に割り当てられたExpandoObjectインスタンスがあります。ExpandoObjectがIDictionaryを実装していることを理解しています。しかし、以下の割り当ては失敗します。

dynamic obj = new ExpandoObject();
obj["Test"] = "TestValue";
Console.WriteLine(obj.Test);

誰かが私がどこで間違っているのか教えてもらえますか?

obj.Test="TestValue";

ただし、上記のステートメントは正常に機能しているようです。

4

1 に答える 1

1

ExpandoObjectこれを行うには、をにキャストする必要がありますIDictionary<string, object>

これは通常のExpandoの使用法です。

obj.Test = "TestValue";

これは、文字列リテラル(または文字列変数)の使用法です。

var d = (IDictionary<string, object>)obj;
d["Test"] = "TestValue";

string s = "Test";
d[s] = "TestValue";

インターフェイスの実装が明示的である場合、メンバーにアクセスするには、インターフェイスの参照にキャストする必要があります。これがここで起こったことだと思います。

于 2012-07-30T13:21:44.297 に答える