[英]How to get static properties from static class using reflection
我有一个带有静态吸气剂的静态类。
public static class Cars
{
public static KeyValuePair<Guid, string> Acura
{
get { return new KeyValuePair<Guid, string>(new Guid("MMMMMMMM-509B-477A-ADB1-5CD014B41001"), "Acura"); }
}
public static KeyValuePair<Guid, string> AlfaRomeo
{
get { return new KeyValuePair<Guid, string>(new Guid("MMMMMMMM-509B-477A-ADB1-5CD014B41002"), "Alfa Romeo"); }
}
// etc.
}
我需要从此静态类中检索所有静态属性,并对每个KeyValuePair做一些事情。 但是以下内容在运行时引发System.FormatException,表示找不到可识别的数字
Type type = typeof(Cars);
foreach(var manufacturer in type.GetProperties())
{
if(manufacturer.PropertyType == typeof(KeyValuePair<Guid, string>))
{
var v = manufacturer.GetValue(null, null); //this does not work
// How to get the KeyValuePair<Guid, string>?
}
}
如何获得每个KeyValuePair?
更新:对不起..解决方案完美地工作,问题是GUID不是很重要的Guid .. M不是十六进制字符
这与反射或静态属性无关。 在属性的获取器中,抛出了异常。
"MMMMMMMM-509B-477A-ADB1-5CD014B41001"
和"MMMMMMMM-509B-477A-ADB1-5CD014B41002"
不是有效的Guid
。 使用有效值创建Guid
,属性不会引发异常。
Guid
每个数字都必须是一个十六进制数字(请参见此处 )。
new Guid("MMMMMMMM-509B-477A-ADB1-5CD014B41001")
将抛出异常,例如
new Guid("00000000-509B-477A-ADB1-5CD014B41001")
惯于。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.