Я пытаюсь сделать следующее:Как ограничить общую функцию, чтобы принимать только некоторый тип классов
public class A
{
}
public class B
{
}
Где-то в проекте я хочу, чтобы это:
public class C
{
public T func<T>(T obj) [where T can be either of class A or class B]
{
obj.x = 100;
return obj;
}
}
Я ве пытался:
public T func<T>(T obj) where T: A, B
, но это дает мне:
Ограничение класса типа «B» должно выполняться перед любым другим ограничением.
Может кто-нибудь объяснить мне, как сделать func
принять только класс A или класс B?
Если вы можете сделать базовый класс или интерфейс 'BaseForAandB', тогда вы сможете установить ограничение типа' where T: BaseForAandB' –
. Вы можете использовать интерфейсы для этой цели, но вы не можете сделать это, если вы не можете измените классы. –
Какова практическая проблема, которую вы пытаетесь решить, приняв «A» или «B»? Используете ли вы какую-то общность между двумя классами? Разве вы не хотите, чтобы другие классы получали функциональность, связанную с вашим общим классом, даже если они могли соответствовать требованиям родового? – dasblinkenlight