考慮以下層次:通用包裝類
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