C#中向匿名对象的Translations添加新键值对失败,求解决方法
解决C#匿名对象无法添加属性的问题
C#中的匿名类型是不可变的,对象一旦创建就无法修改或新增属性,这就是你尝试添加键值对失败的原因。以下是几种可行的解决方案:
方法1:使用ExpandoObject实现动态扩展
ExpandoObject是.NET提供的动态类型,支持随时添加或修改属性,完全适配你的需求:
dynamic obj = new ExpandoObject(); obj.Translations = new ExpandoObject(); // 初始化原有属性 obj.Translations.test = ""; // 新增属性 obj.Translations.ds = ""; obj.Translations.dsfd = "";
方法2:创建新的匿名对象
如果需要保留匿名类型的特性,可以基于原有对象的属性,创建一个包含新属性的新匿名对象:
// 原有匿名对象 dynamic originalObj = new { Translations = new { test = "", } }; // 生成包含新属性的新对象 dynamic newObj = new { Translations = new { originalObj.Translations.test, ds = "", dsfd = "" } };
方法3:改用Dictionary存储键值对
如果Translations的键值对需要频繁增删,直接用Dictionary<string, string>会更灵活:
var obj = new { Translations = new Dictionary<string, string> { { "test", "" } } }; // 新增键值对 obj.Translations.Add("ds", ""); obj.Translations.Add("dsfd", "");
内容的提问来源于stack exchange,提问作者tesrer
相关产品推荐
相关产品推荐

