У меня есть общая коллекция, которая содержит метод, который необходимо вызвать элементам в коллекции. Каждый элемент имеет ссылку на общую коллекцию. Проблема в том, что я не могу использовать тип каждого элемента в качестве типа, передаваемого в общую коллекцию.
Идея такая (я знаю, она не компилируется):
public class MyCollection<T>
{
public void Call(T item) { ... }
}
public abstract class MyItemBase
{
protected MyCollection<typeof(this)> _collection;
public MyItem(MyCollection<typeof(this)> collection)
{
this._collection = collection;
}
public DoSomething()
{
this._collection.Call(this);
}
}
public class MyItem : MyItemBase
{
}
Очевидно, вы не можете объявить MyCollection<typeof(this)>
, но я думаю, что, написав это так, вы получите общее представление о том, что я пытаюсь сделать. По сути, я хочу, чтобы ссылка абстрактного класса на коллекцию была означает MyCollection<MyClass>
.
Есть ли способ заставить эту работу?