Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用属性设置布尔属性_C#_Attributes - Fatal编程技术网

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文件进行挑剔的讨论,并详细描述了各种元素(包括属性)的编码方式,所以我非常敏感:)。