Jür*_*ock 8 .net c# inheritance constructor
如果我想要一个只能从子类访问的构造函数,我可以使用protected构造函数中的关键字.
现在我想要相反的.
我的子类应该有一个构造函数,可以通过其基类访问,但不能从任何其他类访问.
这甚至可能吗?
这是我目前的代码.问题是子类有一个公共构造函数.
public abstract class BaseClass
{
public static BaseClass CreateInstance(DataTable dataTable)
{
return new Child1(dataTable);
}
public static BaseClass CreateInstance(DataSet dataSet)
{
return new Child2(dataSet);
}
}
public class Child1 : BaseClass
{
public Child1(DataTable dataTable)
{
}
}
public class Child2 : BaseClass
{
public Child2(DataSet dataSet)
{
}
}
Run Code Online (Sandbox Code Playgroud)
svi*_*ick 13
我想你有两个选择:
internal.这意味着它可以从同一个程序集中的所有类型访问,但在大多数情况下应该足够了.使子类嵌套在基类中:
public abstract class BaseClass
{
public static BaseClass CreateInstance(DataTable dataTable)
{
return new Child1(dataTable);
}
private class Child1 : BaseClass
{
public Child1(DataTable dataTable)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
这样,BaseClass可以使用构造函数,但没有其他外部类型可以这样做(甚至可以看到子类).