У меня есть метод, подобный следующему:
public IEnumerable<T> GetControls<T>()
: where T : ControlBase
{
// removed.
}
Затем я создал класс:
public class HandleBase<TOwner> : ControlBase
: TOwner
{
// Removed
}
Я бы хотел позвонить
GetControls<HandleBase<this.GetType()>>;
где будет использоваться тип ЭТОГО класса для передачи в HandleBase. Это, по сути, получит все HandleBase, которые имеют владельца этого типа.
Как мне этого добиться?
EDIT:
Я использую .NET 2.0, поэтому решения, которые работают выше 2.0, не будут работать.
Идея состоит в том, чтобы ControlBase имел коллекцию других ControlBase для "потомков". Затем их можно запрашивать в зависимости от их типа с помощью GetControls<T>()
. Это позволило бы мне, например, получить всю HandleBase для Shape. Затем я могу взять все это и установить Visible = false или сделать что-то еще с ними. Таким образом, я могу манипулировать детьми определенного типа для коллекции.
HandleBase<TOwner>
требует TOwner, так как он имеет ссылку на «тип владения». Таким образом, вы можете добавить в Shape только все, что расширяет HandleBase. Имеет смысл?
Спасибо за помощь!