Можно ли указать ограничение на общий параметр C#, где этот параметр должен быть абстрактным? Итак, в настоящее время у меня есть метод, в котором общий параметр должен иметь конструктор без параметров, но теперь я пришел к сценарию, где мне нужен абстрактный T, поэтому я надеялся перегрузить метод тем, который принимает только абстракцию. TsОграничение общего параметра как абстрактного
public static void SomeMethod<T>(IEnumberable<T> SomeParam) where T:SomeBase, new()
{
T tThing = new T();
//do something simple
}
public static T SomeOtherMethod<T>(IEnumberable<T> SomeParam) where T:SomeBase, new()
{
T tThing = new T();
//do something simple
}
public static void SomeMethod<T>(IEnumberable<T> SomeParam) where T:SomeBase, abstract()
{
//do something clever
}
public static T SomeOtherMethod<T>(IEnumberable<T> SomeParam) where T:SomeBase, abstract()
{
//do something clever
}
Если, как я подозреваю, ответ «вы не можете этого сделать», есть ли разумные обходные пути?
Там нет ограничений для абстрактно - и его не ясно, что вы хотите сделать, что вы думаете, что нужно абстрактное ограничение. Вы можете ограничить класс, который является абстрактным (например, 'SomeBase' в вашем коде). – Jamiec
Новое ограничение просто существует, чтобы определить, есть ли у вас значение или ссылочный тип. Однако я не вижу никакого практического использования для абстрактного ограничения. Какая польза от 'IEnumerable' вы надеетесь, что 'IEnumerable ' won't также есть? –
HimBromBeere
Как насчет наследования * SomeBase * в новый абстрактный класс, а затем с использованием *, где T: NewAbstractClass *? – bit