我想做一個通用的包裝類,可以包裝任何其他類,並添加額外的功能。但是同時我希望能夠在任何我通常使用包裝類的地方使用這個包裝器。目前我使用隱式投射,它工作正常。但是,在一個理想的世界,我想包裝類具有相同的曝光方法和字段的封裝類,就像在這片示例代碼:包裝一個類,同時仍然暴露其所有公共方法,屬性和字段
class Foo
{
public int Bar() { return 5; }
}
class Wrapper<T>
{
private T contents;
public void ExtraFunctionality() { }
public static implicit operator T(Wrapper<T> w) { return w.contents; }
}
Foo f = new Foo();
Wrapper<Foo> w = new Wrapper<Foo>(foo);
int y = w.Bar();
我可以使用一些古老的巫術,反射或其他技巧使這成爲可能?
注意:在C++中我只是重載 - >操作符來操作字段內容而不是包裝器。
聽起來像裝飾的代理。使用T4來生成包裝類的一個選項? – lboshuizen
這是一個猜測,但你有沒有嘗試過'公共課包裝:T'?我不知道這是否可能。 –
Silvermind
@Silvermind沒有這不可能。 –