不,这是不可能的。您将得到一个运行时错误,告诉您匿名类型的属性
有什么方法可以更改动态类型属性值吗?代码示例:
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