Вы не можете переопределить параметр типа универсального метода в производном классе. Для достижения аналогичной функциональности, один из вариантов состоит в том, чтобы ваш базовый класс был универсальным и имел ваш производный класс, такой как
class Derived : BaseClass<Customer>
{
protected override bool HasAnyStuff(Customer customer)
{
// ...
}
}
, где BaseClass
объявлено как
class BaseClass<T> where T : class
{
// ...
protected virtual bool HasAnyStuff(T obj)
{
// ...
}
}
В качестве альтернативы, в зависимости от того, как именно используется ваш производный класс, вы можете просто переопределить метод HasAnyStuff
с помощью не универсального аргумента Customer
.
public bool HasAnyStuff(Customer customer)
{
// ...
}
Однако обратите внимание, что новый HasAnyStuff
не будет вызываться, если вы не работаете с экземпляром DerivedClass
. То есть
BaseClass foo = new DerivedClass();
foo.HasAnyStuff(new Customer());
вызовет обобщенный метод BaseClass
, а не DerivedClass
неуниверсальный метод.