考虑以下层次:通用包装类
class A
{
}
class B : A
{
public void Foo() { }
}
class C : A
{
public void Foo() { }
}
这是一个第三方库,我不能修改它。有没有办法我可以写一些'通用模板包装',将Foo()方法转发给作为构造函数参数传递的适当对象? 我最后写以下,其中不使用仿制药,似乎比较难看:
class Wrapper
{
A a;
public Wrapper(A a)
{
this.a = a;
}
public void Foo()
{
if (a is B) { (a as B).Foo(); }
if (a is C) { (a as C).Foo(); }
}
}
我喜欢一些模板约束像Wrapper<T> where T : B or C
。
我认为主要的问题是,'富''不是'虚拟'在'A',对吧? – dasblinkenlight 2013-05-08 10:59:14