C# 未找到属性上的属性
它发现方法上的attr很好,但属性上的attr无法识别C# 未找到属性上的属性,c#,reflection,C#,Reflection,它发现方法上的attr很好,但属性上的attr无法识别 [MyAttribute("x")] public string Z{get;set;} [MyAttribute("x")] public void Y() { } 我在调试期间查看了该对象,并查看了它在CustomAttributes中正确列出属性的方法,但属性上的属性为空。。。有人能解释一下吗?您在属性上定义了属性,而不是在属性访问器上。要在getter上提供属性,可以使用这种语法(我包括了所有3个可能的位置,您可以根据其适用性
[MyAttribute("x")]
public string Z{get;set;}
[MyAttribute("x")]
public void Y()
{
}
我在调试期间查看了该对象,并查看了它在CustomAttributes中正确列出属性的方法,但属性上的属性为空。。。有人能解释一下吗?您在属性上定义了属性,而不是在属性访问器上。要在getter上提供属性,可以使用这种语法(我包括了所有3个可能的位置,您可以根据其适用性选择在任何组合上添加属性)
看起来很奇怪。是否尝试关闭编辑器并重新打开?重新启动?如何定义
MyAttribute
?添加MyAttribute的声明?或者至少是属性的部分。还有,在财产案中你怎么称呼这个?传递get或set方法不会继承属性声明…我认为…很可能这就是我在commentsYeah nów中提到的,它是有效的。。真不敢相信我在这件事上浪费了这么多时间。多谢!另外,是否有任何方法可以通过methodinfo对象访问propertyinfo的属性?让我换一种说法;最有效的方法是什么?因为我毫不怀疑这是可能的。对于类型中的每个PropertyInfo
,检查getaccessor
或GetSetAccessor
是否等于您拥有的MethodInfo
public static bool HasAttribute(this MethodInfo m, Type attrType)
{
return Attribute.IsDefined(m, attrType);
}
[MyAttribute("on PropertyInfo")]
public string Z
{
[MyAttribute("on getter MethodInfo")] get;
[MyAttribute("on setter MethodInfo")] set;
}