如何获取静态结构中包含的 const 字符串的自定义属性 class
How to get the custom attribute of a const string contained in struct in static class
我搜索了一个解决方案,通过这个常量字符串的值来获取一个常量字符串的自定义属性。像这个例子:
public static class Directory
{
public struct Bank01
{
[SymbolAttribute("Attribute01")]
public const string Value01 = "Bank01.Value01";
[SymbolAttribute("Attribute02")]
public const string Value02 = "Bank01.Value02";
}
public struct Bank02
{
[SymbolAttribute("Attribute03")]
public const string Value01 = "Bank02.Value01";
[SymbolAttribute("Attribute04")]
public const string Value02 = "Bank02.Value02";
}
public static SymbolAttribute GetSymbolAttribute(string value)
{
return typeof(Directory)
.GetMember(value.Split('.')[0])
.GetType()
.GetField(value.Split('.')[1])
.GetCustomAttribute<SymbolAttribute>();
}
}
我想像这样使用这个功能:
public static Main()
{
SymbolAttribute attribute = GetSymbolAttribute(Directory.Bank01.Value01);
}
我不明白为什么这个有效:
return typeof(Directory.Bank01)
.GetField(value.Split('.')[1])
.GetCustomAttribute<SymbolAttribute>();
这个不行:
return typeof(Directory)
.GetMember(value.Split('.')[0])
.GetType()
.GetField(value.Split('.')[1])
.GetCustomAttribute<SymbolAttribute>();
你有想法吗?提前谢谢你..
Bank01
和Bank02
不是成员,它们是嵌套的类,所以你应该使用GetNestedType
代替。
typeof(Directory)
.GetNestedType(value.Split('.')[0])
.GetField(value.Split('.')[1])
.GetCustomAttribute<SymbolAttribute>();
我搜索了一个解决方案,通过这个常量字符串的值来获取一个常量字符串的自定义属性。像这个例子:
public static class Directory
{
public struct Bank01
{
[SymbolAttribute("Attribute01")]
public const string Value01 = "Bank01.Value01";
[SymbolAttribute("Attribute02")]
public const string Value02 = "Bank01.Value02";
}
public struct Bank02
{
[SymbolAttribute("Attribute03")]
public const string Value01 = "Bank02.Value01";
[SymbolAttribute("Attribute04")]
public const string Value02 = "Bank02.Value02";
}
public static SymbolAttribute GetSymbolAttribute(string value)
{
return typeof(Directory)
.GetMember(value.Split('.')[0])
.GetType()
.GetField(value.Split('.')[1])
.GetCustomAttribute<SymbolAttribute>();
}
}
我想像这样使用这个功能:
public static Main()
{
SymbolAttribute attribute = GetSymbolAttribute(Directory.Bank01.Value01);
}
我不明白为什么这个有效:
return typeof(Directory.Bank01)
.GetField(value.Split('.')[1])
.GetCustomAttribute<SymbolAttribute>();
这个不行:
return typeof(Directory)
.GetMember(value.Split('.')[0])
.GetType()
.GetField(value.Split('.')[1])
.GetCustomAttribute<SymbolAttribute>();
你有想法吗?提前谢谢你..
Bank01
和Bank02
不是成员,它们是嵌套的类,所以你应该使用GetNestedType
代替。
typeof(Directory)
.GetNestedType(value.Split('.')[0])
.GetField(value.Split('.')[1])
.GetCustomAttribute<SymbolAttribute>();