gpt4 book ai didi

c# - 如何防止一个类在库外被继承,而被公共(public)类继承?

转载 作者:行者123 更新时间:2023-12-02 02:27:17 25 4
gpt4 key购买 nike

假设我在库中有以下类

public abstract class HiddenBaseClass
{
//stuff
}
public abstract class ClassA : HiddenBaseClass
{
//stuff
}
public abstract class ClassB : HiddenBaseClass
{
//stuff
}

我想防止HiddenBaseClass在库外被继承,但是我确实希望ClassAClassB被继承。我不能使 HiddenBaseClass 成为 内部类,因为那意味着 HiddenBaseClassClassA 更难访问B 类

有解决办法吗?

最佳答案

与对该问题的评论相反,我相信这种情况可以有意义,如果 HiddenBaseClass 具有您需要依赖内部实现的方面(因为您相信内部实现),但公开其他抽象操作供外部代码实现。它可能不是适合您的用例的设计,但并非不合理。

一个简单的方法可以让它无法在同一个库之外直接继承它,就是给它一个内部构造函数:

public abstract class HiddenBaseClass
{
// Only classes in the same assembly can chain to this constructor.
internal HiddenBaseClass() {}
}

只要类中的所有构造函数都是内部的(或私有(private)保护的,或私有(private)的),这将防止其他程序集中的类将它们的构造函数链接到基类类构造函数,从而防止继承。

关于c# - 如何防止一个类在库外被继承,而被公共(public)类继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65459256/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com