使用.NET属性的最佳做法是什么?

PIC*_*ain 5 .net properties exception

关于我应该对属性做多少,我有点困惑.我听说属性应该始终代表类的逻辑属性.除了ArgumentOutOfRange之外,Get和Set几乎不会抛出异常.真的吗?以下示例是完全错误的吗?

public bool DeviceRegistered
{
    get{ return _Registered;}
    set
    {
        if(value)
        {
            RegisterDevice();
            _Registered = true;
        }
        else
        {
            UnRegisterDevice();
            _Registered = false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

此外,如果同一类中的方法想要更改属性的值,它应该通过属性的set访问器还是直接修改私有变量_Registered?

如果您在使用酒店时有任何其他建议,请包含!谢谢

Ric*_*ber 6

以下是MSDN中属性设计指南的链接.请特别注意" 属性与方法"部分.

根据我个人的经验,你不应该使用属性来做很多工作.他们应该返回已经检索过的信息.我目前正在开发一个代码库,它有很多延迟加载的属性,可以从Web服务中检索信息.在调试时查看类的属性会导致评估所有属性,从而导致功能评估超时并使ASP.NET进程崩溃.

  • @Greg:从属性中将私有支持字段设为`System.Lazy <T>`,`return _lazyValue.Value;`,并将该属性标记为`[DebuggerBrowsable(DebuggerBrowsableState.Never)]`. (3认同)