编辑:我知道如何从注册表中提取数据。我有一个不同的问题。请完整阅读问题。
想象一下,我有一个名为“ Car”的类,具有以下属性:
制造商(必填)
型号(必填)
注册(必填)
重量(可选)
轮胎(可选)
......
和另外15个可选属性
每个特定汽车的每个细节都以以下方式存储在Windows注册表中:
\\ Cars \ CarID
每个CarID子项均包含以下格式的这些值。对于前
制造商----- REG_SZ -----法拉利SpA
型号-------------- REG_SZ ----- SP12 EC
注册----- REG_SZ ----- TL6735436
以及可能存在或可能不存在的其他可选字段。
我想创建一个循环,循环访问CarID子项的所有值,并将它们分配给汽车类实例的适当属性。
像这样的东西:
Dim cTemp as New Car
For Each strTemp as String in keyCarID.GetValueNames
ctemp.<Appropriate Property> = keyCarID.GetValue(strTemp)
Next
Car类具有与注册表中的值名称相同的属性名称。
与检查注册表中是否存在每个属性相比,此方法将更加有效。
我对VB.net或C#都可以
您可以修改此示例:
class D
{
public int a { get; set; }
public int b { get; set; }
public int c { get; set; }
}
[....]
D d = new D();
PropertyInfo[] typeProperties = d.GetType().GetProperties();
foreach(string propertyName in new string[] { "a", "b", "c"}) {
int myValue = 1; // for example
typeProperties.Single(p => p.Name == propertyName).SetValue(d, myValue);
}
因此它看起来像:
Car car = new Car();
RegistryKey keyCarID = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Default);
PropertyInfo[] typeProperties = car.GetType().GetProperties();
foreach (string propertyName in keyCarID.GetValueNames()) {
typeProperties.Single(p => p.Name == propertyName).SetValue(car, keyCarID.GetValue(propertyName));
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句