从dll隐藏基类

时间:2016-05-12 06:07:09

标签: c#

我有一个BaseClass,它由一个程序集中的大约20多个类继承。此基类的属性由其他一些程序集(朋友程序集)使用。我已将属性声明为internal,以便其他任何程序集都不会看到或使用它们。

现在,有没有办法将BaseClass本身隐藏在除朋友程序集之外的其他程序集中?或许更好的机制或设计构建?

我无法制作BaseClass internal,因为继承它的类是public

这就是BaseClass目前的样子。

[assembly: InternalsVisibleTo("MyApp.FriendAssembly1")]
[assembly: InternalsVisibleTo("MyApp.FriendAssembly2")]
namespace MyApp.Input
{
    /// <summary>
    /// Note: The members of this class are visible only to certain friend assemblies. The normal consumers of this assembly can simply ignore this class.
    /// </summary>
    public class BaseClass
    {

        internal bool Property1 { get; set; }

        internal bool Property2 { get; set; }

    }
}

1 个答案:

答案 0 :(得分:0)

你不能。继承树中的每个类必须至少具有与派生类相同的可见性。

我想知道为什么这对你很重要。如果只是因为您不希望其他人继承它,请创建一个内部构造函数。