Я пытаюсь разработать API, который должен иметь определенный метод для каждого из 20+ конкретных классов, которые мне нужно поддерживать (я не могу изменить эти спецификации).
Моя первая идея состояла в том, чтобы использовать перегрузку, чтобы иметь один и тот же метод с разными параметрами и иметь возможность автоматически вызывать правильный метод, основанный на конкретном классе, однако я получаю сообщение об ошибке в заголовке, и мне интересно, было ли лучший способ сделать это (без необходимости использовать if / тип объекта).
Вот быстрый псевдокод пример:
class BaseClass {}
class ChildClassA : BaseClass {}
class ChildClassB : BaseClass {}
class Factory {
public static void Build(ChildClassA obj){}
public static void Build(ChildClassB obj){}
}
class Main {
public static void Main(string[] args){
BaseClass obj = getFromSomewhereRemote();
Factory.Build(obj); // This is the line where I get the error
}
}
Я понимаю, что мог бы создать такой метод:
void Build(BaseClass obj){
switch (obj){
case BaseClassA objA:
Build(objA);
break;
....
}
}
но мне было интересно, смогу ли я получить те же результаты без включения типов.