2009-07-27 60 views
0

任何人都可以提供一些指导设计和实施良好的属性?我所关心的,如几个方面: 设计属性的提示?

  • 相互排斥

    • 副作用
    • 并发
    • 对称性和可逆性
    • 错误处理/异常

    指针,以现有的写起坐那些回答这些话题会很棒。我不寻找与WPF依赖属性的帮助。

  • 回答

    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也可能是一个好地方获取更多信息