Нет.В C # вы создаете экземпляр класса, затем , среда выполнения вызывает его конструктор.К тому времени, когда конструктор исполняется, уже слишком поздно выбирать другой тип.
Однако конструктор производного класса всегда вызывает один из конструкторов своего базового класса, и вы можете использовать это в своих интересах (чтобы избежать повторения кода).
Люди часто создают фабрики , чтобы делать то, о чем вы говорите.Например, учитывая классы Parent
, Child1:Parent
и Child2:Parent
, вы можете написать фабрику следующим образом:
public class ParentFactory {
public Parent CreateParent(string type) {
switch(type) {
case "Child1":
return new Child1();
case "Child2":
return new Child2();
default:
throw new ArgumentException("Unexpected type");
}
}
}