首页 > 解决方案 > 更改 C# 动态类型的属性值

问题描述

有没有办法改变动态类型的属性值?代码示例:

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

使用 C# 有可能吗?谢谢

标签: c#.netobjectdynamicpropertyinfo

解决方案


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

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

在上述示例中:您创建了一个类似于类类型的匿名类型变量,但它只能包含公共只读成员,因此在这种情况下您无法更改 result.Status 值。

解决问题:


我认为您应该使用像字典这样的通用集合代码可能如下所示:

var result = new Dictionary<string, object>() { {"Status", "Warning"}, {"Modified", false}, {"Message", string.empty} };

result ["Status"] = "Ok";

推荐阅读