You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 02:40:36