Hallo,
ich mache gerade meine ersten Versuche mit C# und habe folgendes vor:
Ich möchte eine Klasse schreiben, welche all ihre öffentlichen Properties beim Disposen in die Registry schreibt. Ich habe mich dazu ein wenig informiert und habe erfahren dass dafür Reflections geeignet sind.
Ich habe nun in meiner Dispose() Methode die Ermittlung aller Eigenschaften implementiert, bekomme auch alle existierenden Properties zurückgeliefert, beim Auslesen derer Werte bekomme ich jedoch eine "TargetInvocationException":
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49:
| public void Dispose() { string Str = ""; int Int32 = 0; bool Booli = false;
RegistryKey key = CreateSubKeyObj(); Type t = typeof(SettingManager); PropertyInfo TypeName; Type TypeInfo; PropertyInfo[] ts = t.GetProperties(BindingFlags.Instance | BindingFlags.Public);
for (int i = 0; i < ts.Length; i++) { if (ts[i].CanRead) { TypeName = typeof(SettingManager).GetProperty(ts[i].Name); TypeInfo = TypeName.PropertyType;
switch (TypeInfo.Name) { case "Boolean": ts[i].GetValue(Booli, null); key.SetValue(ts[i].Name, Booli);
break;
case "String": ts[i].GetValue(Str, null); key.SetValue(ts[i].Name, Str);
break;
case "Int32": ts[i].GetValue(Int32, null); key.SetValue(ts[i].Name, Int32);
break;
default: throw new Exception("Die Eigenschaft " + TypeName.Name + " ist vom nicht unterstütztem Typ " + TypeInfo.Name); } } } } |
Kann mir jemand weiterhelfen? Ich habe keine Ahnung weshalb mein Vorhaben mit getValue() scheitert!
PS:
Die Entwicklung erfolgt mit dem .NET 2.0 Compact Framework.
Grüße
4000
Moderiert von
Christian S.: Code- durch C#-Tags ersetzt