После небольшого программирования один из моих классов использовал дженерики таким образом, которого я никогда раньше не видел. Мне хотелось бы получить некоторые мнения об этом, если это плохое кодирование или нет.
abstract class Base<T> : where T : Base<T>
{
// omitted methods and properties.
virtual void CopyTo(T instance) { /*code*/ }
}
class Derived : Base<Derived>
{
override void CopyTo(Derived instance)
{
base.CopyTo(instance);
// copy remaining stuff here
}
}
Это ОК использование дженериков или нет? Я в основном думаю об ограничении на "себя". Иногда мне кажется, что дженерики могут "взорваться" в других классах, где я использую базовый класс.