【发布时间】:2017-02-16 20:52:13
【问题描述】:
我的问题涉及我提供的以下示例。我觉得这是一种反模式。不确定它是否有名字。我想要的是能够访问特定的实现。试图避免可能只是这种模式是坏/好的意见的答案,我想知道一种更好的方法来重新考虑这个问题,以及是否有这个(反)模式的名称。
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;
}
}
}
【问题讨论】:
-
我可能只是没有在谷歌上搜索正确的词,所以任何可能引导我到那里的帮助都会很高兴
-
你的例子是错误的。
interface A中的Type type = Type.A;和interface B中的Type type = Type.B;无效。接口不能有实现。你也不需要类型。 -
我认为我们只是在挑剔,考虑到我没有提到一种语言,如果它有助于将接口 A 和 B 视为抽象类
标签: design-patterns interface casting