C# 使用属性设置布尔属性
有没有办法使用属性设置属性值?在视图模型中,我有一个属性:C# 使用属性设置布尔属性,c#,attributes,C#,Attributes,有没有办法使用属性设置属性值?在视图模型中,我有一个属性: public bool HasAccess{get;set;} 我想这样做: [MyAttribute] public bool HasAccess{get;set;} MyAttribute应该设置HasAccess的值。我的问题是如何构建MyAttribute,将HasAccess的值设置为属性中给定的值 属性与类型关联。您可以通过Type.GetProperty()和PropertyInfo.GetCustomAttribu
public bool HasAccess{get;set;}
我想这样做:
[MyAttribute]
public bool HasAccess{get;set;}
MyAttribute应该设置HasAccess的值。我的问题是如何构建MyAttribute,将HasAccess的值设置为属性中给定的值 属性与类型关联。您可以通过Type.GetProperty()和PropertyInfo.GetCustomAttributes()找到这个。这无助于设置对象的属性值。除非HasAccess是静态的,否则它看起来不是静态的。或者换句话说,您将无法为PropertyInfo.SetValue()的第一个参数提供值
如果您已经有了对象引用,那么这不是问题,请使用其GetType()方法并将对象传递给SetValue。但这是其他地方的代码,而不是属性类中的代码。这没有任何意义,我感觉您对属性到底是什么以及如何正确使用它深感困惑。告诉我们你真正想要实现的是什么。也许我没有解释清楚,我想要实现的是DefaultValueAttribute设置属性值所做的相同的事情。属性的作用不是这样的。“一个
DefaultValueAttribute
不会导致成员自动初始化为属性值。您必须在代码中设置初始值。”属性不仅与类型关联,还与成员(如本例)、参数等关联。请检查,它们甚至只对内部结构有效,比如interface impl table行。属性也可以应用于程序集和类型,这就是我为什么要吹毛求疵的原因。更严格地说,属性可以与许多不同的ECMA335令牌相关联,而不仅仅是与类型相关联的令牌。我不知道如何在不混淆作品内容的情况下将其转化为答案。我确实说过我在吹毛求疵。我花了很多时间对ECMA335文件进行挑剔的讨论,并详细描述了各种元素(包括属性)的编码方式,所以我非常敏感:)。