更改C#动态类型的属性值



有什么方法可以更改动态类型属性值吗?代码示例:

dynamic result = new { Status = "WARNING", Modified = false, Message = string.Empty };
result.Status = "OK";

使用C#有可能吗?感谢

在c#4.0中添加了动态数据类型。它用于避免编译时的类型检查。编译器在编译时不检查动态类型变量的类型,相反,编译器在运行时获取类型。

不过,在大多数情况下,动态数据类型的行为类似于对象。

在上述示例中:您已经创建了一个匿名类型变量,该变量与类类型类似,但它只能包括公共只读成员,因此无法更改结果。这种情况下的状态值。

解决问题:


我认为你应该使用字典之类的通用集合代码可能看起来像这样:

var result = new Dictionary<string, object>() { {"Status", "Warning"}, {"Modified", false}, {"Message", string.empty} };
result ["Status"] = "Ok";
不,这是不可能的。您将得到一个运行时错误,告诉您匿名类型的属性Status是写保护的或只读的。

为了将来使用,这里有在线编译器证明:

文件上写着:

匿名类型包含一个或多个公共只读属性。

您需要使用原始属性的值来重新创建对象的其余属性:

var result = new { Status = "WARNING", Modified = false, Message = string.Empty };
result = new { Status = "OK", Modified = result.Modified, Message = result.Message };
Console.WriteLine(result.Status);

输出:

OK

相关内容

  • 没有找到相关文章

最新更新