看来您还没有完全掌握继承,并且您已经过度考虑了您需要做什么。
我已经继续并刚刚创建了一个构造函数,它以基类的实例作为参数。
扩展(继承)基类时不需要这样做,只有在包装类时才这样做。
有没有办法利用派生类从基类继承这一事实来使这个构造函数不那么脆弱?
是:使用构造函数重载。给定这个基类:
public class MyBase
{
public virtual string Name { get; set;}
}
你可以这样做:
public class MyExtendedClass : MyBase
{
public MyExtendedClass(string name)
{
Name = name;
}
}
但更好的是像这样利用构造函数重载,其中构造函数参数传递给基类构造函数:
public class MyBase
{
public MyBase(string name)
{
Name = name;
}
public virtual string Name { get; set;}
}
public class MyExtendedClass : MyBase
{
public MyExtendedClass(string name) : base (name) { }
}
您倾向于在构造函数中为您希望不可变的属性传递值。对于其他人,您可以利用内联初始化:
var myNewClass = new MyExtendedClass() { Name = "blah" };