C# 未找到属性上的属性

C# 未找到属性上的属性,c#,reflection,C#,Reflection,它发现方法上的attr很好,但属性上的attr无法识别 [MyAttribute("x")] public string Z{get;set;} [MyAttribute("x")] public void Y() { } 我在调试期间查看了该对象,并查看了它在CustomAttributes中正确列出属性的方法,但属性上的属性为空。。。有人能解释一下吗?您在属性上定义了属性,而不是在属性访问器上。要在getter上提供属性,可以使用这种语法(我包括了所有3个可能的位置,您可以根据其适用性

它发现方法上的attr很好,但属性上的attr无法识别

[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;
}