Создание экземпляра родительского класса в методе дочернего класса - PullRequest
0 голосов
/ 30 ноября 2018
public class Parent {}

public class Child: Parent {
    public Child() {
        Parent instance_of_Parent = INSERTCODEHERE;
    }
}

Как я могу создать требуемый экземпляр родительского класса в методе дочернего класса (не обязательно в конструкторе, хотя для краткости я выбрал этот метод), не ссылаясь на «Parent» по имени, новместо этого как-то идентифицировать его как родителя текущего класса?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018
GetType().BaseType.GetConstructor(new Type[]{}).Invoke(null);

Спасибо DnaJur на Rimworld Discord за этот ответ, который позволяет выбрать конкретный конструктор для родительского класса, который будет использоваться для создания экземпляра.

0 голосов
/ 30 ноября 2018

Если вас не волнует производительность, это сработает:

public class Child: Parent {
    public Child()
    {
        var baseClass = GetType().BaseType;
        dynamic instance_of_Parent = Activator.CreateInstance(baseClass);
    }
}
...