私は次のクラスを持っています:
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"));
}
}
Customer クラス内から新しいビジネス ルールを追加しています - ValidateId のコンストラクターを呼び出して、これは問題ありませんが、ValidateId のコンストラクターが基本クラスのコンストラクターを呼び出しています。ここで少し混乱し始めます。
ValidateId コンストラクターが達成しようとしていることができるのに、なぜ基本クラスのコンストラクターを呼び出す必要があるのですか? そして、 ValidateId コンストラクターと基本コンストラクターの両方がエラーメッセージを何かに設定しています:
これは基本コンストラクターにあります:
PropertyName = propertyName;
ErrorMessage = propertyName + " is not valid";
これは ValidateId コンストラクターにあります。
ErrorMessage = propertyName + " is an invalid identifier";
ユーザーにエラーを表示するために使用される ErrorMessage はどれですか?
また、基本コンストラクターを削除して: base(propertyName)
呼び出さない場合、BusinessRule にパラメーターなしのコンストラクターが含まれていないというエラー メッセージが表示されます。明らかに、パラメーターなしのコンストラクターを Businessrule に追加し、すべてを ValidateId コンストラクターに実装できますが、利点/影響は何かを知りたいです。基本コンストラクターを呼び出すかどうか
ありがとう