C# WinForms导出UserControl派生类,但不在类之间

C# WinForms导出UserControl派生类,但不在类之间,c#,winforms,C#,Winforms,我有一个为Windows窗体应用程序制作的DLL。布局看起来有点像这样 public class A : UserControl { protected C c; } public class B : A { } public class C { } 我希望DLL只导出类B,但如果我从A或C中删除公共限定符,它将不会编译。有办法做到这一点吗? 从中删除公共文件时出错: Error CS0060 Inconsistent accessibility: base class '

我有一个为Windows窗体应用程序制作的DLL。布局看起来有点像这样

public class A : UserControl 
{ 
   protected C c;
}

public class B : A { }

public class C { }
我希望DLL只导出
类B
,但如果我从A或C中删除公共限定符,它将不会编译。有办法做到这一点吗?

从中删除公共文件时出错:

Error   CS0060  Inconsistent accessibility: base class 'A' is less accessible than class 'B'

不可能。如果
B
继承了
A
,则在不公开
A
的情况下,您无法公开
B
。如果
B
继承了
A
,那么如果不公开
A
,您就无法公开
B

在声明中指定类型时,请检查该类型的可访问性级别是否取决于成员或其他类型的可访问性级别。例如,直接基类必须至少与派生类一样可访问

通常,为了向其他人隐藏“东西”,您要做的是提供一个公共接口并隐藏所有子类。您可以让您的客户使用您将提供的公共工厂创建具体类。

来源:

在声明中指定类型时,请检查该类型的可访问性级别是否取决于成员或其他类型的可访问性级别。例如,直接基类必须至少与派生类一样可访问


通常,为了向其他人隐藏“东西”,您要做的是提供一个公共接口并隐藏所有子类。您可以让您的客户机使用您也将提供的公共工厂创建具体类。

为什么要这样做?您想解决什么问题?@itsme86主要是隐藏客户不需要知道的东西,以简化将其导入项目的过程。您为什么要这样做?您想解决什么问题?@itsme86主要是隐藏客户不需要知道的东西,以简化将其导入项目的过程。