是否可以使用某种属性来抛出异常。这就是我的意思。而不是这样做:
public int Age
{
get
{
return this.age;
}
set
{
this.age = value;
NotifyPropertyChanged("Age");
if (value < 18)
{
throw new Exception("age < 18");
}
}
}
做这样的事情:
[Range(18,100, ErrorMessage="Must be older than 18")]
public int Age
{
get
{
return this.age;
}
set
{
this.age = value;
NotifyPropertyChanged("Age");
}
}
非常感谢任何帮助!
最诚挚的问候, 基里尔
答案 0 :(得分:5)
您正在寻找一个AOP(面向方面编程)库,它可以非常轻松地完成这项工作。我建议试试PostSharp。主页上的示例应该说明如何在属性/方法上使用它。
答案 1 :(得分:1)
不,那是不可能的。您必须自己在setter中进行验证 - 就像NotifyPropertyChanged。
顺便说一句 - 这称为“面向方面编程”。
答案 2 :(得分:1)
正如公认的解决方案所说,直接做到这一点是不可能的,但可以通过使用像PostSharp这样的工具来实现。 只是添加到已经被告知的内容,我不建议从属性中抛出,或者在赋值时对此类进行验证,因为通常它不会保留太多的值并且可能是导致某些麻烦的原因。 这可能取决于场景。