首页 / 知识
关于继承:有没有办法使构造函数仅对C#中的父类可见?
2023-04-12 18:18:00

Is there a way to make a constructor only visible to a parent class in C#?我有一个从我创建的抽象类继承的类的集合。我想将抽象类用作创建我的抽象类的具体实现实例的工厂。 有什么方法可以从父类以外的所有代码中隐藏构造函数。 我想基本上做到这一点
但我想防止任何人直接实例化这两个具体类。我想确保只有MakeAbstractClass()方法可以实例化基类。有什么办法吗?
更新 对我来说,最简单的解决方案是像samjudson所提到的那样创建子类。但我想避免这种情况,因为它会使我的抽象类文件变得比我想要的要大得多。我宁愿将类分成几个文件进行组织。 我想没有简单的解决方案...
没问题,只需使用partial关键字,您就可以将内部类拆分为任意数量的文件。您不必将其保存在同一文件中。 先前的答案: 有可能,但只有反思
这是另一种模式,没有丑陋的MakeAbstractClass(s??tring args)
如果这些类在同一程序集中,则不能使构造函数成为内部的吗? 您可以使子类成为子类,如下所示:
@Vaibhav这确实意味着该类也已隐藏。但是据我所知,这是完全隐藏构造函数的唯一方法。 编辑:正如其他人所提到的,使用Reflection可以完成相同的事情,它实际上可能更接近您想要的情况-例如,上述方法将具体类答复为与Abstract类在同一文件中,这可能不是很方便。话虽这么说,这是一个很好的" Hack",如果具体类的数量和复杂性较低,则很好。 从接受的答案开始,如果您有一个公共接口并让私有类实现该接口,则可以返回一个指向该接口的指针,然后您的父抽象类之外的任何人都可以使用它们(尽管仍然隐藏了子类) )。 不,我认为我们无法做到这一点。 如果要在单独的服务程序集中使用此类,则可以使用internal关键字。
您不能使用关键字 您实际上需要这样做吗?如果您使用某种伪工厂模式而不需要真正的设计,那么只会使您的代码难以理解,维护和扩展。 如果您不需要这样做,只需实现一个真正的工厂模式。或者,更高级,使用DI / IoC框架。 您需要做的是防止创建默认构造函数。如果这些类不在同一程序集中,则内部可以更改为public。
|
最新内容
相关内容
python支持多继承吗
python支持多继承吗,培训,代码,不了,上边,函数,属性,例子,父亲,定义,母亲,python多继承单继承有时候可能满足不了我们所需的所以我们就会遇到python类的继承机制
python类的继承机制,代码,培训,方法,定义,对象,机制,口感,语法,圆括号,水果,继承是面向对象的三大特征之一,也是实现代码复用的重要手段。继承python子类可以调用父类方法吗
python子类可以调用父类方法吗,培训,名称,资料,情况,地方,函数,参数,方法,表示,语句,python中的子类中的__init__()函数会覆盖父类的函数,一些python可以继承父类方法吗
python可以继承父类方法吗,培训,代码,名字,方法,动物,属性,编译器,这样的话,定义,里面,python继承,调用父类属性方法在python里面,继承一个类python可以多继承吗
python可以多继承吗,代码,培训,不了,方法,属性,父亲,孩子,前缀,上边,变量,python面向对象的主要好处就是代码的重用,实现这一特点通过继承,继承python子类如何重用父类功能
python子类如何重用父类功能,代码,名称,培训,功能,属性,对象,关系,方法,资本家,函数,python子类如何重用父类功能1、根据名称直接调用某一类python计算集合交集的符号
python计算集合交集的符号,培训,符号,参数,更多,语法,实例,元素,以上,两个,教程,python计算集合交集的符号说明1、可以使用&符号来计算两个或python集合的并集操作
python集合的并集操作,培训,操作,参数,更多,语法,符号,实例,元素,以上,两个,python集合的并集操作说明1、可以使用|符号来计算两个或更多集合python集合的差集如何计算
python集合的差集如何计算,培训,参数,更多,语法,符号,实例,元素,以上,两个,方法,python集合的差集如何计算说明1、可以使用-符号来计算两个或python继承的原理分析
python继承的原理分析,分析,合法,培训,原理,属性,顺序,经典,广度,线性,实例,python继承的原理分析原理分析1、子类会先于父类被检查。多个父python判断两个集合是否相等
python判断两个集合是否相等,培训,两个,元素,语法,实例,以上,参数,方法,教程,更多,python判断两个集合是否相等说明可以使用==运算符判断两个python如何判断集合的超集
python如何判断集合的超集,培训,元素,语法,实例,以上,参数,方法,教程,更多,python如何判断集合的超集说明1、可以使用>=运算符判断当前集合