关于如何在 C# 中使内部基础 class 实现具有 class public 的子 class 的任何想法?

Any ideas of how make internal a base class implementation having a child class of that class public in C#?

关于如何在 c# 中使内部基 class 具有 class public 的子 class 的任何想法?

在代码中:

internal class Base { }

public class Child : Base {}

我有一个分层架构,需要向其他层(其他程序集)公开子 class 而不是基础 class。我正在使用继承来避免 class 合成以及与之相关的所有薄纱部分。

关于如何处理此类问题的任何想法?

这是不可能的。您可以通过封装隐藏 class ,包装它并将其隐藏为实现。

基类型永远是已知的。

这是已知的 C# 限制,但这不是 CLR 限制。

不是最佳解决方案,但可以使用中间语言定义继承自内部 class 的新 public class。

此外,可能有些语言已经允许您执行此操作,因此您可能真的不需要编写 IL。

虽然,在这一点上,我不明白 Base 的必要性。由于是内部的,不能被其他人消费,polymorpishm本质上是坏掉了。使用 subclassing 进行代码重用,但不使用 polymorpishm 听起来不太好。

虽然,正如我所说,我可以使用 IL 从 "internal class" 创建一个 "public" class,在那之后,你将能够使用那个 "public" class 在C#端,例如

public class MyDervClass : MyILPublicClass{}

您可以将所有成员设为内部,而不是将 class 设为内部。如果您不希望 Base 被其他程序集继承,请将 Base 的构造函数声明为内部构造函数。