C# 在父构造函数中创建子对象
是否可以使用父对象的构造函数创建子对象的实例,并向其传递某种参数(在本例中为字符串)以告知应创建的子对象的类型?否。在C#中,创建类的实例,然后运行时调用其构造函数。当构造函数执行时,选择其他类型已经太晚了 但是,派生类的构造函数总是调用其基类的构造函数之一,您可以利用它来发挥自己的优势(避免重复代码) 人们经常创造来做你所说的事情。例如,给定类C# 在父构造函数中创建子对象,c#,oop,inheritance,constructor,C#,Oop,Inheritance,Constructor,是否可以使用父对象的构造函数创建子对象的实例,并向其传递某种参数(在本例中为字符串)以告知应创建的子对象的类型?否。在C#中,创建类的实例,然后运行时调用其构造函数。当构造函数执行时,选择其他类型已经太晚了 但是,派生类的构造函数总是调用其基类的构造函数之一,您可以利用它来发挥自己的优势(避免重复代码) 人们经常创造来做你所说的事情。例如,给定类Parent、Child1:Parent和Child2:Parent,可以编写如下工厂: public class ParentFactory {
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");
}
}
}
不确定我是否理解正确,但以下是我理解的:)
如果我理解正确,您希望创建一个类a和一个从a派生的类B。然后你想调用
newa(“B”)
,这应该会返回一个新的B对象
这是不可能的。
但是,我不知道您想要完成什么,但是也许您应该检查一下反射,因为它允许您通过名称字符串创建类的实例
子对象的类型是否继承自父对象的类型?如果是这样的话,你正在寻找一种工厂化的方法。奥利弗:听起来我也很喜欢工厂。我推荐雷丁:不太喜欢。它与GenericTypeTea提供的答案相同,这不是我想要的。
public class parent:child
{
private child childObj;
public parent(string childName)
{
childObj = new child(childName);
}
}
public class child
{
private string name;
public child(string _name)
{
name = _name;
}
}
var obj = myAssembly.CreateInstance("myNamespace.myClassB");