验证对象
- 2020年9月10日
- 2分钟阅读
eXpress持久对象没有内置的验证逻辑。您可以重写IXPObject.OnSaving或IXPObject.OnDeleting方法以实现验证逻辑。例如,这在执行“防御性编程”时执行各种检查很有用。不建议将保存对象的过程与业务逻辑混合在一起。
下面的示例演示如何防止将Name属性设置为空字符串。如果将此属性设置为空字符串,则XPO会引发RequiredPropertyValueMissing异常。
public class RequiredPropertyValueMissing: Exception {
public RequiredPropertyValueMissing(XPObject theObject, string propertyName):
base(String.Format("The {0} property of the {1} object with id {2} must have a value",
propertyName, theObject.GetType().Name, theObject.Oid)) {
}
}
public class Company : Person {
public string Name {
get { return fName; }
set { SetPropertyValue(nameof(Name), ref fName, value); }
}
string fName = "";
protected override void OnSaving() {
if (Name == "")
throw new RequiredPropertyValueMissing(this, nameof(Name));
}
}