C# 在子类方法中实例化父类

C# 在子类方法中实例化父类,c#,class,object,reflection,instantiation,C#,Class,Object,Reflection,Instantiation,如何在子类的方法中创建所需的父类实例(不一定在构造函数中,尽管这是我为简洁起见选择的方法),而不按名称引用“parent”,而是以某种方式将其标识为当前类的父类?如果您不关心性能,这将起作用: public class Parent {} public class Child: Parent { public Child() { Parent instance_of_Parent = INSERTCODEHERE; } } 如果您不关心性能,这将起作用: pu

如何在子类的方法中创建所需的父类实例(不一定在构造函数中,尽管这是我为简洁起见选择的方法),而不按名称引用“parent”,而是以某种方式将其标识为当前类的父类?

如果您不关心性能,这将起作用:

public class Parent {}

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

如果您不关心性能,这将起作用:

public class Parent {}

public class Child: Parent {
    public Child() {
        Parent instance_of_Parent = INSERTCODEHERE;
    }
}
感谢Rimworld Discord上的DnaJur给出的这个答案,它允许为用于实例化的父类选择特定的构造函数


感谢Rimworld Discord上的DnaJur给出的这个答案,它允许为用于实例化的父类选择特定的构造函数。

性能不错,但有时不如可重用性重要。这是否回答了您的问题?像@Daniels一样,我也很想知道现实世界中这种需求是从哪里产生的。@Spar基于投票,这绝对不是你们想要的。。。但我看不出这个问题还问了什么。请你澄清一下为什么这不是你想要的(理想情况下,你为什么要这么做)?我不确定它是否有效,但对于我试图实现的目标来说,它绝对是伪代码。我还没有机会在本地测试它。sharplab.io不喜欢它,但这可能是他们环境的限制。性能不错,但有时不如可重用性重要。这是否回答了您的问题?像@Daniels一样,我也很想知道现实世界中这种需求是从哪里产生的。@Spar基于投票,这绝对不是你们想要的。。。但我看不出这个问题还问了什么。请你澄清一下为什么这不是你想要的(理想情况下,你为什么要这么做)?我不确定它是否有效,但对于我试图实现的目标来说,它绝对是伪代码。我还没有机会在本地测试它。sharplab.io不喜欢它,但这可能是他们环境的限制。删除了我的答案,因为它似乎没有解决问题的正确解释,我不清楚在什么情况下您将从已知类继承,然后需要推断使用时的类型,你能详细解释一下你为什么要这样做吗?@Daniels用名字来指C1是一个与魔法数字等价的类型。假装C2的定义是数千行长,你在中间的某处跑过C1的随机实例化。为什么是C1?C1有什么相关性?需要进行调查。但是,如果你看到的是
base
parent
或其他什么,这些问题中的大多数都不会出现,就像用常数代替幻数一样。谢谢你的回答,我本人不会做这种性能权衡,但我知道您心里有一个用例,它确实需要以这种方式在运行时推断出类型。幸运的是,我的用例是在一个小时的流程开始时只运行一次的代码,所以性能不是主要问题。删除了我的答案,因为它似乎没有解决问题的正确解释,我不清楚在什么情况下您将从已知类继承,然后需要推断使用时的类型,你能详细解释一下你为什么要这样做吗?@Daniels用名字来指C1是一个与魔法数字等价的类型。假装C2的定义是数千行长,你在中间的某处跑过C1的随机实例化。为什么是C1?C1有什么相关性?需要进行调查。但是,如果你看到的是
base
parent
或其他什么,这些问题中的大多数都不会出现,就像用常数代替幻数一样。谢谢你的回答,我本人不会做这种特殊的性能权衡,但我知道您心里有一个用例,它确实需要以这种方式在运行时推断出类型。幸运的是,我的用例是在一个小时长的流程开始时只运行一次的代码,所以性能不是主要问题。
GetType().BaseType.GetConstructor(new Type[]{}).Invoke(null);