无法为ExpandoObject指定值

cod*_*biz 1 c# dynamicobject

只是尝试动态对象,我遇到了这个编译错误

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)

Sea*_*ean 5

您需要声明变量以dynamic使其起作用.这样编译器会将赋值推迟到IDynamicMetaObjectProvider变量的一部分,并且属性将被赋予您指定的值.

通过键入变量作为ExpandoObject指定实际类型,因此编译器将不使用类的动态方面.