只是尝试动态对象,我遇到了这个编译错误
ExpandoObject myObj = new ExpandoObject();
myObj.GivenName = "Testing";
Run Code Online (Sandbox Code Playgroud)
System.Dynamic.ExpandoObject'不包含'GivenName'的定义,并且没有扩展方法'GivenName'接受类型'System.Dynamic.ExpandoObject'的第一个参数'
看看MSDN:ExpandoObject,他们实际上做了不同的事情 - 使用dynamic关键字
dynamic myObj = new ExpandoObject();
myObj.GivenName = "Testing";
Run Code Online (Sandbox Code Playgroud)
对此有何解释?是否仍然可以在myObj不使用dynamic关键字的情况下为实例分配值?我看是否有.SetProperty但没有.
谢谢
现在我明白我必须使用dynamic关键字,但如果允许使用该行则有什么用处
ExpandoObject myObj = new ExpandoObject();
Run Code Online (Sandbox Code Playgroud)
您需要声明变量以dynamic使其起作用.这样编译器会将赋值推迟到IDynamicMetaObjectProvider变量的一部分,并且属性将被赋予您指定的值.
通过键入变量作为ExpandoObject指定实际类型,因此编译器将不使用类的动态方面.
| 归档时间: |
|
| 查看次数: |
1196 次 |
| 最近记录: |