Ich habe eine Klasse namens Property, die einen Wert speichert und ein Ereignis auslöst, wenn sich der Wert ändert. Es gibt eine andere Klasse namens Observable, die ein Wörterbuch mit Eigenschaften enthalten soll, und ich habe ein Beispiel unten. Wie kann ich den Typ einer im Wörterbuch gespeicherten Eigenschaft abrufen, damit ich das Objekt ändern kann?C# Casting-Objekt zu Klasse mit Typ Argument
Objektklasse:
public class Property<T>
{
public T Value { get; set; }
}
beobachtbare Klasse:
public class Observable
{
public readonly Dictionary<string, object>
Properties = new Dictionary<string, object>();
public Property<T> Get<T>(string name)
{
object obj;
Properties.TryGetValue(name, out obj);
return (Property<T>) obj;
}
}
EDIT:
Dies ist der Fehler, den ich immer bin - Unbehandelte Ausnahme: System.InvalidCastException: Kann nicht werfen Aufgabe Geben Sie 'System.String' ein, um 'ConsoleApplication.Property`1 [System.String]' einzugeben.
Auch, wenn ich die Get-Funktion loswerden und sie durch etwas ersetzen könnte, das den Typ nicht kennt, wäre das viel besser.
Aktualisieren: Gibt es eine Möglichkeit, den Typ durch Hashing des Namens mit einem Typ zu erhalten?
http://stackoverflow.com/questions/2399710/how-to-get-type-of-tkey-and-tvalue-given-a-dictionarytkey-tvalue-type –
Haben Sie davon ausgehen wollen, dass'Erhalte (...) 'Wird es gelingen? Was stimmt nicht mit dem von dir bereitgestellten Code? –
das ist nicht das, was ich frage. Ich möchte nicht den Typ des Wörterbuchwerts erhalten, sondern den Typ des Wertes in einer Eigenschaft. –