今天反编译别人的代码出现类似下面的代码,出现实例化时出错.
public class baseClass
{
public baseClass()
{
GetString();
}
public virtual string GetString()
{
return string.Empty;
}
}
public class SubClas:baseClass
{
private string msg;
public SubClas(string mmsg):base()
{
msg = mmsg;
}
public override string GetString()
{
return msg.ToString();
}
}
这个问题当然可以在声明子类成员时实例化成员,但总感觉这样不太好,正在找原因呢,不知那位大侠已有更好的办法.
我认为GetString(当然原来的方法不是这类的)应属性类初始化方法,此方法不应作为虚方法提供,而应由各个子类自己负责自己的初始化方法,父类只负责自己的初始化,不然如果父类与子类的开发人员不是同一个人,或没有父类的源码,则很容易造子类编写者一时找不到错误的原因.只能经过动态跟踪调试才能找到原因.