Meine Frage bezieht sich auf das folgende Beispiel, das ich angegeben habe. Ich denke, das ist ein Anti-Muster. Nicht sicher, ob es einen Namen hat. Was ich möchte, ist, auf die spezifischen Implementierungen zugreifen zu können. Beim Versuch, Antworten zu vermeiden, die nur eine Meinung darüber sein könnten, ob dieses Muster schlecht/gut ist, würde ich gerne einen besseren Weg finden, dieses Problem zu überdenken, und wenn es einen Namen für dieses (Anti-) Muster gibt.Umwandlung eines Schnittstellentyps in eine implementierende Klasse
interface WTF
{
Type type;
}
enum Type
{
A,
B
}
interface A : WTF
{
Type type = Type.A;
void MethodA();
}
interface B : WTF
{
Type type = Type.B;
void MethodB();
}
void Foo(List<WTF> list)
{
foreach(var i in list)
{
switch(i.type)
{
case Type.A:
A a = (A)i;
a.MethodA();
break;
case Type.B:
B b = (B)i;
b.MethodB();
break;
}
}
}
Ich kann nicht nur die richtigen Worte googeln werden, so dass jede Hilfe, die mich führen zu würde es zu –
Ihr Beispiel schön falsch ist. 'Typ Typ = Typ.A;' in 'Schnittstelle A' und' Typ Typ = Typ.B; 'in' Schnittstelle B' sind nicht gültig. Schnittstellen können keine Implementierung haben. Auch Sie brauchen den Typ nicht. – shadow
Ich denke, wir werden nur nit wählerisch, wenn man bedenkt ich keine Sprache erwähnt hat, wenn es nur von der Schnittstelle A und B denken, hilft als abstrakte Klassen –