Как использовать модальный объект, сохраненный в конструкторе класса, и вызывать его из другого метода? - PullRequest
0 голосов
/ 19 сентября 2018

C # Программирование для меня новое, и я пытаюсь десериализовать файл Json и использовать его в качестве объекта класса.

У меня есть модальный класс Configmodal.cs Это сопоставляется с парой ключ-значениефайл json.

using Newtonsoft.Json;

namespace JSParse
{
public  class ConfigModel
{
    [JsonProperty("username")]
    public string Username { get; set; }

    [JsonProperty("password")]
    public string Password { get; set; }

    [JsonProperty("system")]
    public string System { get; set; }
}
}

Это основной файл Program.cs, который вызывает два метода Serialiser () и RetrieveValues ​​().

class Program
{

    static void Main(string[] args)
    {
        ParseJson pjs = new ParseJson();
        pjs.Serializer();


        //Don't know what parameter should be passed here too 
        GetJson gjson = new GetJson();
        gjson.RetrieveValues();

    }
}

Разбор Json в порядке, и здеськод:

public class ParseJson
{
    public void Serializer()
    {
        var json = File.ReadAllText(@"config.json");
        ConfigModel objConfig = 
           JsonConvert.DeserializeObject<ConfigModel(json);

        GetJson gj = new GetJson(objConfig);
    }
}

Но я не могу использовать этот objConfig в новом методе RetrieveJson класса Getjson.cs А вот неполный код:

 public class GetJson
{
    private readonly ConfigModel _ConfigModel;

    public GetJson(ConfigModel configModel)
    {
        _ConfigModel = configModel;
    }

    public void RetrieveValues()
    {
        //I've no idea how to call _ConfigModel of a constructor
        // and use those username, password in this method              
    }
}

Пожалуйста, помогите мнев выполнении двух вещей, которые я упомянул в разделе комментариев обоих методов.

1 Ответ

0 голосов
/ 19 сентября 2018

Я бы сказал:

Изменить ParseJson класс на:

public class ParseJson
{
  public GetJson Serializer()
  {
    var json = File.ReadAllText(@"config.json");
    ConfigModel objConfig = 
       JsonConvert.DeserializeObject<ConfigModel(json);

    return new GetJson(objConfig);
  }

}

А затем изменить GetJson класс

public class GetJson
{
  private readonly ConfigModel _ConfigModel;

  public GetJson(ConfigModel configModel)
  {
    _ConfigModel = configModel;
  }

  public ConfigModel RetrieveValues()
  {
    return _ConfigModel;          
  }
}

И измените основной на:

class Program
{

  static void Main(string[] args)
  {
    ParseJson pjs = new ParseJson();
    GetJson gjson = pjs.Serializer();

    ConfigModel cf = gjson.RetrieveValues();
    //cf.Username and other members

    //OR you can have:  ConfigModel cf = pjs.Serializer().RetrieveValues();
  }
}

Но я не понимаю, почему вы создали так много классов.

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