Настройка гибкой модели в веб-API для контроллера Get - PullRequest
0 голосов
/ 05 октября 2018

Я занимаюсь разработкой простого веб-API только с контроллером GET.В настоящее время у меня есть следующая модель, которая является типом возврата моего контроллера GET:

namespace _1WebApplication.Models
{
    [DataContract]
    public class SystemStatus
    {        
        public string SystemName { get; set; }       
        public string Good { get; set; }      
        public string Bad { get; set; }        
        public string MachineStatus { get; set; }
    }
}

, и мой GET API выглядит следующим образом:

// GET api/values
public SystemStatus Get()
{
    //Read the data from XML file here
    string systemName = "REW_1";
    string good = "60";
    string bad = "10";
    string machineStatus = "Running";

    var SystemStatus = new SystemStatus
    {
        SystemName = systemName,
        Good = goodCount,
        Bad = badCount,
        MachineStatus = machineStatus
    };

    return SmartscanStatus;    
}

ВОПРОС: В приведенном выше случае я могу вернуть значения только 4 переменных (то есть SystemName, Good, Bad и MachineStatus).Но на самом деле я хочу прочитать параметры и значения из файла XML, а затем вернуть эти значения.

Например, у меня есть этот XML-файл

<SystemName>mysystem</SystemName>
<Good>60</Good>
<Bad>10</Bad>
<MachineStatus>stop</MachineStatus>
<IpAddress>127.0.0.1</IpAddress>        
<Username>username</Username>       
<Password>password</Password> 

В этом случае в XML-файле есть еще несколько переменных, но, поскольку моя модель исправлена, я не могу их вернуть.Итак, как сделать мою модель гибкой / динамичной, чтобы я мог выбирать имена и значения переменных из файла XML.

1 Ответ

0 голосов
/ 05 октября 2018

Считайте XML с помощью XDocument и преобразуйте его в динамический объект

ExpandoObject предоставляет способ создания динамических свойств.

public SystemStatus Get()
{
    XDocument xmlDoc = XDocument.Parse(xmlData); 
    string jsonStr = JsonConvert.SerializeXNode(xmlDoc);
    dynamic dynamicObject = JsonConvert.DeserializeObject<ExpandoObject>(jsonStr);

    return dynamicObject;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...