Context:一个简单的基类,它包含一个名称和几个方法。
public abstract class BaseElement
{
public string Name { get; set; }
public abstract object GetDescription();
public abstract void DoStuff();
}
开发人员可以继承BaseElement,他必须实现GetDescription()
和DoStuff()
,但可以完全忘记为Name
属性赋值。
一个简单的解决方案就是以这种方式改变类:
public abstract class BaseElement
{
public string Name { get; private set; }
public abstract object GetDescription();
public abstract void DoStuff();
private BaseElement()
{
}
public BaseElement(string name)
{
Name = name;
}
}
所以,这种方式当你子类时,你被迫分配一个名字。
不过,您始终可以使用null
或""
。
好的,然后我可以在ctor中添加一个参数检查并抛出相对异常,但是......在尝试使用派生类之后,你只会在运行时发现错误。
所以,问题是:是否可以添加编译时规则来指示编译器检查变量的可能值,以便在编译时而不是在运行时发现问题?
答案 0 :(得分:1)
这样怎么样?
public string Name
{
get { return _name; }
private set
{
if (!string.IsNullOrWhiteSpace(value))
_name = value;
else
{
throw new Exception("Exception");
}
}
}