获取没有"属性"的属性类型名称

时间:2015-10-17 03:22:13

标签: .net reflection attributes

typeof(UniqueFieldAttribute).Name会返回UniqueFieldAttribute,但我希望它返回UniqueField。如果VS在可以解析类元素的同时将属性解析为其实际类型而没有名称中的子字符串Attribute,那么我似乎可以从该类型的某个属性获取该可解析名称对象

我知道我可以这样做......

typeof(UniqueFieldAttribute).Name.Substring(0, typeof(UniqueFieldAttribute).Name.Length - 9)

......但我不想。

1 个答案:

答案 0 :(得分:1)

不,没有提供友好属性名称的类或对象的属性。它是一种C#语言功能。编译器(和Visual Studio的IntelliSense)完全按照键入的类型查找类。如果没有找到,它会附加"属性"并再看一遍。

将属性类命名为"属性"的约定。并使用此语言功能。但是,两者都不是必需的。

因此,盲目地剥离属性类名的最后9个字符是错误的。你可以剥离"属性"如果它在最后。但是,除非您生成C#代码,否则可能会令人困惑,因为每种.NET语言都有自己的规范。对于.NET CLR,以这种方式简化的类型名称不再是相同(或任何)类型的名称。