在其内部引用派生类型
我有一些链接:
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
但后来我记得 ICollection
中没有协方差。
编辑:澄清一下,我想要这个包装器是在对象内提供删除功能(以及其他一些东西)(我无法更改基本对象,所以我需要一个包装器来提供此功能并对其进行操作)。这个抽象类将具有如下方法:
void Remove()
{
while(this.baseList.Remove(baseObject));
this.baseList = null;
while(this.wrappedList.Remove((TWrapped)this));
this.wrappedList = null;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我最终改变了如何使列表同步并允许项目自行删除的逻辑。我创建了一个新类来保存包装项目的集合:
使用示例类:
然后我可以使用
new WrapperCollection(listOfInts, (model,parent) => newwrappedInt(模型,父级));
。I end up changing the logic of how I'm going to make the lists sync and allow Items to remove themselves. I created a new class to hold a collection of the wrapped items:
Using the sample class:
Then I can instantiate a collection with
new WrapperCollection<wrappedInt, int>(listOfInts, (model, parent) => new wrappedInt(model, parent));
.