有人可以为设计和实施好的属性提出一些指导吗?我关注的方面包括:
回答这些主题的现有写作指针非常棒。我不是在寻找WPF依赖属性的帮助。
答案 0 :(得分:1)
通常,除了可能的边界检查和类型检查(取决于语言)之外,属性不应包含几乎任何逻辑。因此,除了错误处理/异常之外,列表中的每个项目都不应该是实现属性时的因素。
W.R.T错误处理,从属性中抛出异常是绝对可以的(即当调用块尝试将属性设置为无效值时)。此外,在尝试解析数据时,使用try ... catch语句是合适的。
这方面的一个例子是使用属性来隐藏Web应用程序中的请求参数:
public int UserId
{
get {
string x = Request["userid"];
int userid = -1;
if (!int.TryParse(x, out userid))
throw new ApplicationException("UserID must be a valid integer");
return userid;
}
}
这是一个人为的简化例子,但我希望它说明了这一点。在实际应用程序中,您可能希望使用不同的错误处理和/或解析方法来检查ID的有效范围等,这些都取决于您的具体情况。
wikipedia entry属性也可能是获取更多信息的好地方