gpt4 book ai didi

c# - 无法为 ExpandoObject 赋值

转载 作者:太空宇宙 更新时间:2023-11-03 18:37:47 25 4
gpt4 key购买 nike

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

ExpandoObject myObj = new ExpandoObject();
myObj.GivenName = "Testing";

System.Dynamic.ExpandoObject' does not contain a definition for 'GivenName' and no extension method 'GivenName' accepting a first argument of type 'System.Dynamic.ExpandoObject' could be found

查看MSDN: ExpandoObject ,他们实际上做了不同的 - 使用 dynamic 关键字

dynamic myObj = new ExpandoObject();
myObj.GivenName = "Testing";

请问这是怎么解释的?是否仍然可以在不使用 dynamic 关键字的情况下为 myObj 的实例赋值?我查看了它是否有 .SetProperty 但没有。

谢谢

更新

现在我明白我必须使用 dynamic 关键字,但是如果允许的话这行有什么用

ExpandoObject myObj = new ExpandoObject();

最佳答案

您需要将变量声明为 dynamic 才能正常工作。这样,编译器将推迟对变量的 IDynamicMetaObjectProvider 部分的赋值,并且该属性将被赋予您指定的值。

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

关于c# - 无法为 ExpandoObject 赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12844447/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com