【发布时间】:2015-07-31 15:32:02
【问题描述】:
希望是一个简单的问题
我需要序列化一个继承类,在此示例中 iProperty 继承自“PropertyDescriptor”。为了实现这个 iProperty 需要一个无参数构造函数,而基类没有这样的构造函数,如果我尝试添加一个构造函数,我被告知基类不包含一个需要 0 个参数的方法,这是正确的。 我如何解决这个问题。
谢谢。
例子
public class iProperty : PropertyDescriptor
{
private string propName;
private object propValue;
// Need Parameterless Construtor ?
public iProperty(string pName, object pValue)
: base(pName, new Attribute[] { })
{
propName = pName;
propValue = pValue;
}
}
【问题讨论】:
-
我认为我们需要查看
PropertyDescriptor类(或至少是它的构造函数)。 -
您可能需要为
iProperty制作一个可序列化的包装器,使用方法GetiProperty或基于序列化信息创建iProperty 对象的等效方法。没有解决构造函数的要求。 -
请显示您的 iProperty 无参数构造函数。这可以调用具有默认值的现有 PropertyDescriptor 构造函数之一。
-
那么,如果我要让 iProperty 成为一个外部类,以便它可以被序列化,我将如何将该类集成到上述代码中?谢谢
-
您可以使用组合而不是继承,并使用属性“[XmlIgnore]”标记 PropertyDescriptor 字段。或者将 PropertyDescriptor 更改为接口。或者为 PropertyDescriptor 创建一个无参数的构造函数。这实际上取决于您的架构和限制。
标签: c# inheritance constructor