Я так понимаю это сделать нельзя, но всё таки спрошу... Есть у меня базовый абстрактный класс Control, где параметр T - это тоже какой-то класс Component, но это уже не так важно. Я создаю потомка Button - наследник от Control. public class MyButton : Control В базовом классе у меня есть методы, они что-то делают и возвращают ссылку на самого себя. Бывает удобно сделать: new MyButton().Text("Foo").Name("Boo")
Но проблема в том, я могу вернуть только Control в базовом классе.
В итоге у меня получается: // 1.
MyButton btn = new MyButton();
btn.Text(""); // 2.
Control
Ответ
Нормально это не поддерживается. Но есть костыль, который работает на одноуровневых иерархиях: class Control
where TSelf : Control
{
public virtual TSelf Foo () { return (TSelf)this; }
// ...
} class Button : Control
Комментариев нет:
Отправить комментарий