0
我有這個東西鏈接:引用一個派生類型的本身
public abstract class Wrapper<T, TWrapped>: where TWrapped : Wrapper<T, TWrapped>
{
protected T baseObject;
protected ICollection<T> baseList;
protected ICollection<TWrapped> wrappedList;
public Wrapper (T base, ICollection<T> baseList, ICollection<TWrapped> wrappedList) { }
}
然後當我從中獲得我需要的東西,如:
public class Base { }
public class Sample: Wrapper<Base, Sample> { }
有沒有辦法去除TWrapped
並創建一個對派生類型的引用?我嘗試使用ICollection<Wrapped<T>>
,但後來我記得ICollection
中沒有協變。 (我不能改變基礎對象,所以我需要一個包裝來給這個funcionality和操縱它)。編輯:澄清,我想用這個包裝提供去除funcionality(和一些其他的東西)在對象內(我不能改變基礎對象,所以我需要一個包裝給這個funcionality和操縱它)。這個抽象類將有這樣的方法:
void Remove()
{
while(this.baseList.Remove(baseObject));
this.baseList = null;
while(this.wrappedList.Remove((TWrapped)this));
this.wrappedList = null;
}
對不起,我錯過了這一點。也許你應該解釋爲什麼你已經到達這個......裝置,也許你會如何正常使用它。我有明確的感覺,這裏至少有一處不必要的複雜層次(否則爲了清晰起見,層需要分離) – sehe 2011-04-30 18:14:16
班級試圖達到什麼目的?即你將如何使用它? – BrandonAGr 2011-04-30 18:16:19
我已經解決了我的問題。我改變了我對它的看法。我會在稍後發佈解決方案的答案(我是一個新用戶,在8小時之前我無法發佈自己的答案)。 – 2011-04-30 22:18:16