Eine Methode des Framework gibt result vom Typ object zurück. Ich weiß aber, dass sich dahinter ein Dictionary<string, object> verbirgt. Jetzt würde ich gern eine Klasse Item einführen:
class Item : Dictionary<string, object> { }
Damit ich das, was zurückkommt, gleich vernünftig typisiere. Aber die Umwandlung von object in Item klappt nicht.
Das kann nicht funktionieren, da Deine Item Klasse von Dictionary<string, object> erbt und daher kein direkter Cast durchführbar ist.
Eine Möglichkeit ist, dass Du Deine Item Klasse ein wenig erweiterst und sie wie im Beispiel instanziierst. Dabei arbeitest Du aber logischerweise nicht mit der Originalliste (Fügst Du Deiner Item Klasse einen Eintrag hinzu, bleibte das ürsprüngliche Dictionary Objekt davon unberührt).
Beispiel Item Klasse:
class Program { static void Main(string[] args) { Item item = new Item(GetResult() as IDictionary<string, object>); }
public static object GetResult() { Dictionary<string, object> result = new Dictionary<string, object>(); result.Add("Item1", 1); result.Add("Item2", "nix"); return result; }
Ja, genau, das funktioniert. Was aber nicht funktioniert, ist, wenn ich eine Klasse class Item : Dictionary<string, object> {} einführe und das Object in diese umwandeln will. Dann gibt es TypeCastException. Aber warum? Das ist doch dasselbe.
public class Katze : Tier { public float Gewicht {get; set;} }
wenn Du jetzt eine Instanz {Tier} hast, wie willst Du daraus eine Katze "machen" :-) Umgekehrt geht es, da eine Katze immer auch ein Tier ist. Schau Dir am Besten mal die Grundlagen der Vererbung an...
Ja, so erklärt, ist das logisch und macht Sinn. Danke. Andererseits will ich ja eigentlich nur eine Art Alias für Dictionary<string, object> einsetzen. Doof, dass nicht so einfach geht.
class Item : Dictionary<string, object> {}
einführe und das Object in diese umwandeln will. Dann gibt es TypeCastException. Aber warum? Das ist doch dasselbe.