gpt4 book ai didi

c# - GetCustomAttributes 不返回值

转载 作者:太空狗 更新时间:2023-10-29 21:18:45 27 4
gpt4 key购买 nike

我已经定义了一个自定义属性

[AttributeUsage(AttributeTargets.Property )]
public class FieldAttribute: Attribute
{
public FieldAttribute(string field)
{
this.field = field;
}
private string field;

public string Field
{
get { return field; }

}
}

我的类使用自定义属性如下

[Serializable()]   
public class DocumentMaster : DomainBase
{

[Field("DOC_CODE")]
public string DocumentCode { get; set; }


[Field("DOC_NAME")]
public string DocumentName { get; set; }


[Field("REMARKS")]
public string Remarks { get; set; }


}
}

但是当我尝试获取自定义属性的值时,它返回空对象

Type typeOfT = typeof(T);
T obj = Activator.CreateInstance<T>();

PropertyInfo[] propInfo = typeOfT.GetProperties();

foreach (PropertyInfo property in propInfo)
{

object[] colName = roperty.GetCustomAttributes(typeof(FieldAttributes), false);
/// colName has no values.
}

我错过了什么?

最佳答案

打字错误:应为 typeof(FieldAttribute)。有一个不相关的系统枚举,称为 FieldAttributes(在 System.Reflection 中,您在 using 指令中有它,因为 PropertyInfo正确解析)。

此外,这更容易使用(假设属性不允许重复):

var field = (FieldAttribute) Attribute.GetCustomAttribute(
property, typeof (FieldAttribute), false);
if(field != null) {
Console.WriteLine(field.Field);
}

关于c# - GetCustomAttributes 不返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10315637/

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