有没有方法让我访问C类属性?
例如,如果我有以下类:

...
[TableName("my_table_name")]
public class MyClass
{
    ...
}

我能做点什么吗?
MyClass.Attribute.TableName => my_table_name

谢谢!

最佳答案

您可以使用Attribute.GetCustomAttribute方法:

var tableNameAttribute = (TableNameAttribute)Attribute.GetCustomAttribute(
    typeof(MyClass), typeof(TableNameAttribute), true);

不过,这对我来说太冗长了,你可以通过下面的小扩展方法让你的生活更轻松:
public static class AttributeUtils
{
    public static TAttribute GetAttribute<TAttribute>(this Type type, bool inherit = true) where TAttribute : Attribute
    {
        return (TAttribute)Attribute.GetCustomAttribute(type, typeof(TAttribute), inherit);
    }
}

所以你可以简单地使用
var tableNameAttribute = typeof(MyClass).GetAttribute<TableNameAttribute>();

09-26 23:47