创建基于配置字符串初始化自身的对象

时间:2014-09-11 21:24:43

标签: c# constructor

我正在编写一堆以下类型的类,它对我来说似乎有点臭。基本上我想根据属性的一些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个属性的属性则会变得有点噩梦
  3. 我想我只是在寻找一些关于这是否是最佳方式的反馈。

1 个答案:

答案 0 :(得分: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("{...}");