假设我有一个类,其中包含两个类型为string
的属性还有以下限制
定义其值相互依赖的属性的最佳方法是什么,并且在一个属性中进行的更改应该触发另一个属性的setter属性?
答案 0 :(得分:5)
您需要在属性设置器中添加验证。
string prop1;
string prop2;
string Prop1
{
get { return prop1;}
set
{
if (!( Prop2 == "Test2" && value == "Test1"))
{
Prop1 = value;
}
... Add other condition here
}
}
string Prop2
{
get { return prop1;}
set
{
// set Prop2 based on Prop1
}
}
答案 1 :(得分:3)
你有很多选择:
using
声明中使用防护。答案 2 :(得分:0)
您负责编写属性设置器中需要的“逻辑”(验证类型)
我会使用规范模式来提取验证逻辑并使其可测试
http://devlicio.us/blogs/jeff_perrin/archive/2006/12/13/the-specification-pattern.aspx
答案 3 :(得分:0)
你可以在每个属性的setter中实现这个逻辑,但我会质疑它的智慧。
在对象上使用Validate
方法检查这些属性的状态或让另一个对象负责执行验证并返回错误或对对象进行适当更改可能会更好