关于如何在 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
的构造函数声明为内部构造函数。
关于如何在 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
的构造函数声明为内部构造函数。