2014-09-11 1 views
0

Я кодирую кучу классов следующего типа, и это кажется мне немного вонючим. В принципе, я хочу deserialze, основанный на некоторой конфигурации json свойств, а также сериализую его для хранения. Я думал, что следующий метод будет работать хорошо, так как я не хочу оговорить, что сериализации/десериализации должен быть в формате JSON и т.д.Создание объектов, которые инициализируются на основе строки конфигурации

Код выглядит это для простого объекта:

public class IntegerDatasourceInstanceOptions 
{ 
    public int Start { get; set; } 
    public int Count { get; set; } 

    public IntegerDatasourceInstanceOptions() 
    { 

    } 

    public IntegerDatasourceInstanceOptions(string config) 
    { 
     var options = JsonConvert.DeserializeObject<IntegerDatasourceInstanceOptions>(config); 
     if (options != null) 
     { 
      Start = options.Start; 
      Count = options.Count; 
     } 
    } 

    public override string ToString() 
    { 
     return JsonConvert.SerializeObject(this); 
    } 
} 
  1. Правильно ли это, или я должен использовать ISerializable?
  2. Я хочу исключить необходимость обновления всех свойств в конструкторе. Это нормально для пары свойств в этом случае, но если у меня есть один из 30 свойств, это становится немного ночным кошмаром

Я думаю, я просто ищу информацию о том, является ли это наилучшим способом идти или нет.

ответ

2

Я предпочитаю использовать статический метод в тех случаях, как это, например:

public class IntegerDatasourceInstanceOptions 
{ 
    public int Start { get; set; } 
    public int Count { get; set; } 

    public IntegerDatasourceInstanceOptions() 
    { 

    } 

    public override string ToString() 
    { 
     return JsonConvert.SerializeObject(this); 
    } 

    public static IntegerDatasourceInstanceOptions Create(string config) 
    { 
     return JsonConvert.DeserializeObject<IntegerDatasourceInstanceOptions>(config); 
    } 

} 

Вы можете просто сделать:

var options = IntegerDatasourceInstanceOptions.Create("{...}"); 
+0

выглядит Fantastico .. Идите с этим Ричардом –

+0

Спасибо за подтверждение. Примерно через 10 минут я вернулся к коду и придумал то же самое. Это убивало меня, что я не мог думать об этом. –

Смежные вопросы