gpt4 book ai didi

c# - 属性的自定义属性 - 获取属性属性的类型和值

转载 作者:IT王子 更新时间:2023-10-29 04:12:50 26 4
gpt4 key购买 nike

我有以下自定义属性,可以应用于属性:

[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class IdentifierAttribute : Attribute
{
}

例如:

public class MyClass
{
[Identifier()]
public string Name { get; set; }

public int SomeNumber { get; set; }
public string SomeOtherProperty { get; set; }
}

还会有其他类,可以将标识符属性添加到不同类型的属性中:

public class MyOtherClass
{
public string Name { get; set; }

[Identifier()]
public int SomeNumber { get; set; }

public string SomeOtherProperty { get; set; }
}

然后我需要能够在我的消费类中获取这些信息。例如:

public class TestClass<T>
{
public void GetIDForPassedInObject(T obj)
{
var type = obj.GetType();
//type.GetCustomAttributes(true)???
}
}

解决此问题的最佳方法是什么?我需要获取 [Identifier()] 字段的类型(整数、字符串等...)和实际值,显然是基于类型。

最佳答案

类似下面的内容,这将仅使用它遇到的第一个具有该属性的属性,当然您可以将它放置在多个属性上..

    public object GetIDForPassedInObject(T obj)
{
var prop = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance)
.FirstOrDefault(p => p.GetCustomAttributes(typeof(IdentifierAttribute), false).Count() ==1);
object ret = prop !=null ? prop.GetValue(obj, null) : null;

return ret;
}

关于c# - 属性的自定义属性 - 获取属性属性的类型和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3289198/

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