gpt4 book ai didi

c# - PropertyInfo 中的属性与 CustomAttributes

转载 作者:IT王子 更新时间:2023-10-29 04:38:32 27 4
gpt4 key购买 nike

我一直在使用 Reflections 并希望获取为属性声明的所有属性。 PropertInfo下有两个属性类是CustomAttributesAttributes .

根据MSDN , 解释如下:

属性:

This property represents the attributes associated with a member. All members have a set of attributes that are defined in relation to the specific type of member. The property attributes let the user know if this property is the default property, a SpecialName property, and so on.

注意: PropertyInfo.Attributes 中给出的代码示例页面甚至无法工作。

自定义属性:

An array that contains all the custom attributes applied to this member, or an array with zero elements if no attributes are defined.

但是,当我为他们运行此代码时,Attributes 不返回任何内容,而 CustomAttributes 返回 Required .

void Main()
{
var attributes = typeof(Myproperty).GetProperty("Caption").CustomAttributes;
//var attributes = typeof(Myproperty).GetProperty("Caption").Attributes;
attributes.Dump(); //Dump is a LinqPad method which dumps everything to the outpu window
}

public class Myproperty
{
private string caption = "Default caption";

[Required]
public string Caption
{
get{return caption;}
set {if(caption!=value) {caption = value;}
}
}
}

最佳答案

PropertyInfo.Attributes 与 Attribute 类没有任何关系。检查PropertyAttributes enumeration对于您可能遇到的值。这些是与 C# 代码没有明显联系的 CLR 实现细节。是的,这是一个不幸的命名选择。

要查找类似于 [Required] 属性的属性,您必须使用 CustomAttributes 属性。

关于c# - PropertyInfo 中的属性与 CustomAttributes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17954163/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com