【发布时间】:2023-03-18 14:18:01
【问题描述】:
我有一个动态对象。
如果属性存在,我想将属性设置为一个值
private static void SetValue(ref dynamic property, object value)
{
if(property != null)
{
property = value;
}
}
原来是这样的
SetValue(ref resource.name, "[parameters('name')]");
但是,这种方法不适用于动态,因为显然您不能为它们使用 ref
我该如何实现呢?如果这是唯一的方法,我很乐意使用扩展方法
我设置了很多可能存在也可能不存在的属性
如果没有这样的解决方案,我的代码将会一团糟,因为我需要经常检查 null
if (resource["name"] != null)
{
resource["name"] = "Value etc";
}
保罗
【问题讨论】:
-
所以这就像只在键已经存在的情况下才在字典中设置一个值?
-
是的,我正在使用 json 并将其反序列化为动态,因为结构可以改变,我不想模仿它
-
老实说,这听起来是个糟糕的主意,而且事实上
ref不是这样工作的。还有:value实际上是dynamic,还是没有必要?即在这里反射就足够了吗? -
那么,如果
d.ContainsKey(k),则将其写入字典并只为键k写入新值怎么样? -
我设法把它交给了 JObject,这很好,现在事实证明它实际上是一个 JObject