如果我想要一个只能从子类访问的构造函数,我可以使用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)
{
}
}
我认为你有两个选择:
- 创建子构造函数
internal
。这意味着可以从同一程序集中的所有类型访问它,但这在大多数情况下应该足够了。
-
使子类嵌套在基类中:
public abstract class BaseClass
{
public static BaseClass CreateInstance(DataTable dataTable)
{
return new Child1(dataTable);
}
private class Child1 : BaseClass
{
public Child1(DataTable dataTable)
{
}
}
}
这边走,BaseClass
可以使用构造函数,但没有其他外部类型可以这样做(甚至可以查看子类)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)