class BuchBox : IBuchBox
{
public Dictionary<string, Buch> Buchmenge { get; private set; }
public BuchBox(Dictionary<string, Buch> buchmenge)
{
this.Buchmenge = buchmenge;
}
}
class ZeitschriftenBox
{
public Dictionary<string, Buch> Zeitschriftenmenge;
public ZeitschriftenBox(Dictionary<string, Buch> zeitschriftenmenge)
{
this.Zeitschriftenmenge = zeitschriftenmenge;
}
}
class MedienManager
{
IBuchBox buchstaender;
IZeitschriftenBox zeitschriftenstaender;
private Dictionary<string, object> verbinder;
private Dictionary<string, Type> typenverbinder;
public MedienManager(IZeitschriftenBox zeitschriftenstaender, IBuchBox buchstaender)
{
this.zeitschriftenstaender = zeitschriftenstaender;
this.buchstaender = buchstaender;
this.verbinder = new Dictionary<string, object>()
{
{"Buch", this.buchstaender },
{"Zeitschrift", this.zeitschriftenstaender }
};
this.typenverbinder = new Dictionary<string, Type>()
{
{"Buch", typeof(IBuchBox)},
{"Zeitschrift", typeof(IZeitschriftenBox)}
};
}
public void SetzeInhalt(string art, string eigenschaft, string wert)
{
var medium = Convert.ChangeType(this.verbinder[art], this.typenverbinder[typ]);
//trotzdem weiter vom Typ object
medium.oeffnen();
var seitenAnzahl = medium.GetType().GetProperty("SeitenAnzahl").GetValue(medium);
// medium wird als Typ erkannt und die jeweiligen Methoden/Properties sind nutzbar?
}
}
Hallo,
ich hoffe mir kann jemand weiterhelfen.
Ich habe oben die Definition einiger Klassen und der Interfaces weggelassen,
da sie sich denke mal aus den Kontex schließen lassen.
Hier die Frage:
Zeitschrift und Buch haben einige unterschiedliche Eigentschaften und
können nicht das selbe Interface nutzen(durch externes SDK nicht möglich).
Ich möchte natürlich nicht alle Funktionen von Buch(extern) in Buchbox
implementieren um sie über mit zu nutzen.
Dictionary<string, Action<Delegate>> verbinder
SDK nicht überall im Code zu verteilen.
Sorry für das schlechte Beispiel ;-) Ich hoffe mir kann jemand weiterhelfen.
Gruß!