在没有默认构造函数C#

时间:2016-03-21 12:10:52

标签: c# deserialization

我有一个要求,我需要反序列化并创建一个没有默认构造函数的类(表)的少数对象。

我的代码片段

else if (reader.Name == "Tables")
{
    reader.ReadStartElement();
    tables = SerializationHelper<Table>.DeserializeList(reader);
}

SerializationHelper中DeserializeList的定义如下:

public static List<T> DeserializeList(XmlReader reader)
{
    XmlSerializer ser = new XmlSerializer(typeof(T));
    List<T> returnval = new List<T>();
    while (reader.NodeType != XmlNodeType.EndElement)
    {
        T result = (T)ser.Deserialize(reader);
        returnval.Add(result);
    }
    return returnval;
}

这是一个现有的工作代码,在最近的更改中,我们必须向类中的所有构造函数添加一个任务参数

这里的Table类现在没有任何无参数构造函数。

在DeSerializing Table对象时,我想知道是否可以通过至少一个参数传递。

我已经阅读了以下内容但他们使用的是JSON.net,在我的情况下不能使用它。

JSON.net: how to deserialize without using the default constructor?

How to deserialize class without calling a constructor?

1 个答案:

答案 0 :(得分:-1)

public class Tables
{
    public Tables(object Mandate)
    {

    }

    private Tables()
    {
        // Private parameterless constructor. Leave private so that it forces everyone to use the Mandate parameter but allows serialization to work. 
    }
}