给定:
interface I
{
}
class B: I
{
}
class C: I
{
}
class A
{
public void Method(B arg)
{
}
public void Method(C arg)
{
}
public void Method(I arg)
{
// THIS is the method I want to simplify.
if (I is B)
{
this.Method(arg as B);
}
else if (I is C)
{
this.Method(arg as C);
}
}
}
我知道有更好的方法来设计这种类型的交互,但是因为 不可能详细说明这需要很长时间才能解释清楚。 由于此模式将重复多次,因此我想更换 具有通用实现的条件逻辑,我可以只使用一行。 我看不到实现此通用方法/类的简单方法,但我的直觉告诉我这应该是可能的。
如有任何帮助,我们将不胜感激。
最佳答案
我会把方法放在接口(interface)里面,然后让多态决定调用哪个方法
interface I
{
void Method();
}
class B : I
{
public void Method() { /* previously A.Method(B) */}
}
class C : I
{
public void Method() { /* previously A.Method(C) */ }
}
class A
{
public void Method(I obj)
{
obj.Method();
}
}
现在当你需要添加一个新的类时,你只需要实现I.Method。您无需触摸 A.Method。
关于c# - 基于类型的条件逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/173145/