2012-07-30 6 views
2

C# 동적을 이해하려고합니다. 동적 변수에 할당 된 ExpandoObject 인스턴스가 있습니다. ExpandoObject에서 IDictionary를 구현하고 있음을 이해합니다. 그러나 아래의 과제는 실패합니다.사전과 같은 ExpandoObject에 데이터를 추가하는 동안 오류가 발생했습니다.

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

누군가 내가 잘못 가고 있다고 말할 수 있습니까?

obj.Test="TestValue"; 

그러나 위의 진술은 정상적으로 작동하는 것 같습니다.

답변

1

이렇게하려면 ExpandoObjectIDictionary<string, object> 번으로 캐스팅해야합니다.

이 정상는 Expando 사용이다 : 인터페이스의 구현이 명시 경우, 당신은 참조로 캐스팅 할 필요가

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

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

:

obj.Test = "TestValue"; 

이 문자열 리터럴 (또는 문자열 변수) 사용이다 인터페이스를 사용하여 구성원에 액세스하십시오. 나는 이것이 여기서 일어난 일이라고 추측한다.

관련 문제