我有以下类别:呼叫基类构造函数在C#
public abstract class BusinessRule
{
public string PropertyName { get; set; }
public string ErrorMessage { get; set; }
public BusinessRule(string propertyName)
{
PropertyName = propertyName;
ErrorMessage = propertyName + " is not valid";
}
public BusinessRule(string propertyName, string errorMessage)
: this(propertyName)
{
ErrorMessage = errorMessage;
}
}
而且
public class ValidateId : BusinessRule
{
public ValidateId(string propertyName) : base(propertyName)
{
ErrorMessage = propertyName + " is an invalid identifier";
}
public ValidateId(string propertyName, string errorMessage)
: base(propertyName)
{
ErrorMessage = errorMessage;
}
public override bool Validate(BusinessObject businessObject)
{
try
{
int id = int.Parse(GetPropertyValue(businessObject).ToString());
return id >= 0;
}
catch
{
return false;
}
}
}
而且
public class Customer : BusinessObject
{
public Customer()
{
AddRule(new ValidateId("CustomerId"));
}
}
从客户类中我增加了新的业务规则 - ValidateId通过调用它的构造函数,这很好,但是然后ValidateId的构造函数调用基类的构造函数,th是我开始有点困惑的地方。
为什么我需要调用基类构造函数,当ValidateId构造函数可以做我想要实现的?而且两者ValidateId构造和基本构造是错误消息设置的东西:
这是基类的构造:
PropertyName = propertyName;
ErrorMessage = propertyName + " is not valid";
,这是ValidateId构造:
ErrorMessage = propertyName + " is an invalid identifier";
其中一个ErrorMessage将用于向用户显示错误?
另外,如果我删除: base(propertyName)
而不是调用基类的构造我得到BusinessRule不含参数的构造函数的错误消息,很明显,我可以再补充一个无参数的构造函数的Businessrule和执行ValidateId构造的一切,但我想知道是什么调用或不调用基础构造函数的优点/含义?
感谢
感谢您的解释。 – 03Usr