Есть ли способ десериализации частей конфигурации базового приложения ASP. NET в виде строки со средствами, заданными конфигурацией IOptions (of T) / MS для примера, показанного ниже?
In мое мнение и то, что я пробовал до сих пор, кажется более сложным, чем примеры, которые я мог найти в Интернете, только из-за вложенного и динамического c содержимого атрибутов .
Пример для конфигурации:
**Example config**
{
"Workflow": {
"ActionContentDefinitions": [
{
"Key": {
"State": "1", // New
"Trigger": "100" // Trigger1
},
"Content": [
{
"Identifier": "Workflow.Permanent.New.Trigger1.Select.PopMusic",
"Type": "2", // Select
"NameTranslationId": "ClientStrings.Workflow.New.Trigger1.Select.PopMusic.Name",
"DescriptionTranslationId": "ClientStrings.Workflow.New.Trigger1.Select.PopMusic.Description",
"Attributes": {
"required": true,
"bindValue": "value",
"items": [
{
"value": "Test",
"label": "TEST"
},
{
"value": "ha",
"label": "HAHA"
}
]
},
"Order": "0"
},
{
"Identifier": "Workflow.Permanent.New.Trigger1.Textbox.FavMusic",
"Type": "0", // Textbox
"NameTranslationId": "ClientStrings.Workflow.New.Trigger1.Textbox.FavMusic.Name",
"DescriptionTranslationId": "ClientStrings.Workflow.New.Trigger1.Textbox.FavMusic.Description",
"Attributes": {
"required": true
},
"Order": "1"
}
]
}
]
}
}
Мы пытались использовать разные типы для атрибутов (см. Ниже класс раздела), но в большинстве случаев десериализация возвращает нулевое значение для атрибутов или даже приводит к пустой коллекции содержания.
**Relevant section class**
public class ActionContent
{
public string Identifier { get; set; }
public WorkflowControlType Type { get; set; }
public string NameTranslationId { get; set; }
public string DescriptionTranslationId { get; set; }
public string Default { get; set; }
public int Order { get; set; }
public string Attributes { get; set; }
// public object Attributes { get; set; }
// public dynamic Attributes { get; set; }
// public IDictionary<string, object> Attributes { get; set; }
// public ActionContentAttributes Attributes { get; set; }
}
Последнее, что мы на самом деле хотим сделать, - это определить каждую возможную запись в Атрибуты как свой собственный класс / раздел. Строки будет достаточно, мы просто передадим эту информацию в другую систему.
Заранее спасибо,
Майкл