Мой вопрос включает в себя приведенный ниже пример. Я чувствую, что это анти-образец. Не уверен, есть ли у него имя. Я хотел бы иметь доступ к конкретным реализациям. Пытаясь избежать ответов, которые могут быть просто оценены, является ли этот шаблон плохим/хорошим, я хотел бы знать, как лучше пересмотреть эту проблему, и если есть имя для этого (анти) шаблона.Передача интерфейса типа реализующему классу
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;
}
}
}
Я не могу быть просто прибегая к помощи правильным слов, так что любая помощь, которая может привести меня было бы приятно –
Ваш пример неправильно. 'Type type = Type.A;' в 'interface A' и' Type type = Type.B; 'в' interface B' недопустимы. Интерфейсы не могут быть реализованы. Также вам не нужен тип. – shadow
Я думаю, что мы просто ничтожны, учитывая, что я не упоминал язык, если он помогает просто думать об интерфейсе A и B как абстрактных классах –