0
任何人都可以提供一些指导设计和实施良好的属性?我所关心的,如几个方面: 设计属性的提示?
- 副作用
- 并发
- 对称性和可逆性
- 错误处理/异常
指针,以现有的写起坐那些回答这些话题会很棒。我不寻找与WPF依赖属性的帮助。
任何人都可以提供一些指导设计和实施良好的属性?我所关心的,如几个方面: 设计属性的提示?
指针,以现有的写起坐那些回答这些话题会很棒。我不寻找与WPF依赖属性的帮助。
通常,除了可能的边界检查和类型检查(取决于语言)之外,属性不应包含几乎任何逻辑。因此,列表中除错误处理/例外之外的每个项目都不应该是实现属性时的因素。
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也可能是一个好地方获取更多信息