(語言是C#在VS 2008)爲了避免代碼重複
我有以下問題: 有許多結構(作爲來自第三方)的所有實施某些具有相同簽名的方法。 我想用包裝類來包裝這些結構體,這些包裝類實現了一個特定的接口,以便可以統一處理這些類。 實施例:
interface AnInterface
{
void DoSomething();
}
struct Struct1
{
public void DoSomething();
}
class Struct1Wrapper : AnInterface
{
private Struct1 m_struct;
public override void DoSomething() // AnInterface implementation
{
m_struct.DoSomething();
}
}
注意Struct1 DoSomething
方法是混凝土而Struct1Wrapper通過更容易處理的接口實現它。
這同樣與Struct2等等 - StructXWrapper的代碼是除了Struct1通過StructX
更換同我已經爲了避免代碼重複使用泛型嘗試:
class GenericStructWrapper<AStruct> : AnInterface
{
private AStruct m_struct;
public override void DoSomething() // AnInterface implementation
{
m_struct.DoSomething();
}
}
但這是行不通的,因爲編譯器沒有關於AStruct DoSomething()
方法的概念。
任何其他的想法如何實現這一點,而無需複製Struct1Wrapper的代碼? 也許有一些類似宏觀的特徵或者反射的一些用法?
謝謝,
Ury Jamshy。
當你引用一個VALUETYPE作爲一個接口,您應該知道, valueType將每次被裝箱。 – 2010-11-14 17:10:33