参考C#'动态'对象的动态成员

Sea*_*ham 5 c# dynamic json.net

我正在使用JSON.NET将JSON文件反序列化为dynamicC#中的对象.

在方法内部,我想传入一个string并引用动态对象中的指定属性.

例如:

public void Update(string Key, string Value)
    {
        File.Key = Value;
    }
Run Code Online (Sandbox Code Playgroud)

File动态对象在哪里,并且Key是传入的字符串.假设我想传入键"foo"和值"bar",我会这样做: Update("foo", "bar");但是由于dynamic对象类型的性质,这导致了

{
 "Key":"bar"
}
Run Code Online (Sandbox Code Playgroud)

相反:

{
 "foo":"bar"
}
Run Code Online (Sandbox Code Playgroud)

有可能用动态对象做我在这里问的问题吗?

Jon*_*eet 4

怀疑你可以使用:

public void Update(string key, string Value)
{
    File[key] = Value;
}
Run Code Online (Sandbox Code Playgroud)

这取决于动态对象如何实现索引,但如果这是 Json.NETJObject或类似对象,我希望它能工作。但重要的是要理解它并不能保证适用于一般dynamic表达式。

如果您实际上只需要这种操作(至少在类中),您可以考虑使用JObject作为字段类型,然后dynamic在需要时公开它。