Я так понимаю это сделать нельзя, но всё таки спрошу...
Есть у меня базовый абстрактный класс 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
Ответы
Ответ 1
Нормально это не поддерживается. Но есть костыль, который работает на одноуровневых
иерархиях:
class Control
where TSelf : Control
{
public virtual TSelf Foo () { return (TSelf)this; }
// ...
}
class Button : Control
Комментариев нет:
Отправить комментарий