C#学习教程:是否可以仅在属性的getter或setter上使用Obsolete属性?我希望能够做这样的事情:publicintId{get{return_id;}[Obsolete("Goingforward,thispropertyisreadonly",true)]set{_id=value;}}但显然不会建立。是否有一种解决方法可以让我将此属性应用于设置器?我不认为这是可能的,因为出于某种原因它已被特别禁止用于Obsolete属性。根据围绕属性目标定义的规则,似乎没有任何理由认为Obsolete属性对属性get或set访问器无效。为了将属性应用于属性集访问器,该属性必须应用于方法、参数或返回值目标。如果查看Obsolete属性,您会发现“方法”是该属性的有效目标之一。事实上,您可以使用与具有AttributeUsage属性的Obsolete属性相同的有效目标来定义您自己的属性,并且您会发现您可以将它们应用于属性get或set访问器,而您不能应用Obsolete属性。[AttributeUsage(AttributeTargets.Method)]classMyMethodAttribute:Attribute{}classMyClass{privateint_Id;publicintId{get{返回_Id;}[MyMethodAttribute]//这有效,因为“方法”是该属性的有效目标[过时]//这不起作用,即使“方法”是过时属性集的有效目标{_Id=value;如果您尝试在属性集访问器上创建自己的属性并将其应用到那里,您可能会注意到一条略有不同的错误消息。您的自定义属性的错误消息将是“Property'YourCustomAttribute'在此声明类型上无效。”,而Obsolete属性的错误消息是“Property'Obsolete'对属性或事件访问器无效。”这个错误消息是不同的一个事实使我相信这是一条规则,无论出于何种原因,将Obsolete属性显式构建到编译器中,而不是依赖于应用于Obsolete属性的AttributeUsage属性。.以上就是C#学习教程:是否可以只对属性的getter或setter使用Obsolete属性,分享所有内容。代表立场,如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
