C#如何映射appsetting的两个部分并将唯一的设置放入单个类对象中

问题描述 投票:0回答:2

我的设置中有以下部分。我正在使用asp.net核心webapi应用程序。

  "security": {
    "instance": "https://login.microsoftonline.com/",
    "domain": "domain.com",
    "tenantId": "tenantid",
    "clientId": "sameclientid"
  },
  "powerBI": {
    "resourceUri": "resourceurl",
    "authorityUri": "authorityurl",
    "extraUrl": "https://api.powerbi.com/",
    "clientId": "sameclientid",
    "clientSecret": "secret"
  }

我需要映射到单个类

  class MapperClass {
    public string Instance {get;set;}
    public string Domain {get;set;}
    public string TenantId {get;set;}
    public string ClientId {get;set;}
    public string ClientSecret {get;set;}
    public string ExtraUri {get;set;}   
  }

是否有一种方法可以合并或合并以上两个部分,并将其映射到最终的MapperClass?

谢谢

c# asp.net asp.net-core asp.net-core-webapi
2个回答
0
投票

由于源文档是JSON,因此您可以将其解析为JObject,然后获取请求的属性,如下所示:

var jsonString = "your JSON";
var jObject = JObject.Parse(jsonString);
var myClass = new MapperClass
{
    Instance = jObject["security"]["instance"].Value<string>(),
    ClientSecret = jObject["powerBI"]["clientSecret"].Value<string>()
};

0
投票

您可以只加载两个部分,然后将其合并到一个类中。

var security = settings.GetSection("security") as CustomSection;
var powerBI= settings.GetSection("powerBI") as CustomSection;
MapperClass mapper = new MapperClass();
mapper.Instance = security.Instance;
© www.soinside.com 2019 - 2024. All rights reserved.