【问题标题】:How create a .net core MVC Model using dynamic object class?如何使用动态对象类创建 .net 核心 MVC 模型?
【发布时间】:2020-08-18 13:21:08
【问题描述】:

我正在寻找一个代码示例来说明如何使用 C# 在 .net 核心 MVC 中创建模型类,其中该类具有动态属性。我的 API 接收到一个 http POST 请求,我正在为我的 API 的 HeadersModel 类中的每个 HTTP 标头创建一个属性。

我正在使用 .net core 3.1

namespace HttpsHeaders.Models
{
    public class Headers : DynamicObject
    {
        //public int ID { get; set; }
        //public string HeaderOne { get; set; }
//Instead of these properties, I want to add the properties dynamically
Dictionary<string, object> dictionary
            = new Dictionary<string, object>();
     }
}

如果有更好的动态对象解决方案,请在我学习.net core C#时告诉我。

编辑: 如何将动态对象序列化为 JSON 字符串?

我可以在此处找到有关如何创建动态对象的说明: https://docs.microsoft.com/en-us/dotnet/api/system.dynamic.dynamicobject?view=netcore-3.1

但是,我无法将 Headers 对象序列化为字符串 json。 这些指令不起作用,序列化后我得到一个空字符串。

C# json object for dynamic properties How to serialize a dynamic object to a JSON string in dotnet core?

dynamic dynObjectInstance = new Headers ();
dynObjectInstance.Foo = "Bar"; 
string resultJson = JsonConvert.SerializeObject(dynObjectInstance);
\\ this returns "{}"
\\ I was expecting to get “{\”Foo\”:\”Bar\”}”

【问题讨论】:

    标签: c# model-view-controller .net-core model dynamicobject


    【解决方案1】:

    我找到了一个比定义模型更好的解决方案,它使用的是 ExpandObject。

        // ExpandoObject supports IDictionary so we can extend it like this
        dynamic expando = new ExpandoObject();
        var expandoDict = expando as IDictionary<string, object>;
        if (expandoDict.ContainsKey(propertyName))
            expandoDict[propertyName] = propertyValue;
        else
            expandoDict.Add(propertyName, propertyValue);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 1970-01-01
      相关资源
      最近更新 更多