2016-05-12 77 views
0

我有一个BaseClass,它由一个程序集中大约20+个类继承。此基类的属性由其他一些程序集(朋友程序集)使用。我已声明属性为internal,以便其他组件无法看到或使用它们。从dll中隐藏一个基类

现在,有没有办法将隐藏BaseClass本身从其他组件除了朋友大会?也许有更好的机制或设计构想?

我不能使BaseClassinternal,因为继承它的类是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; } 

    } 
} 
+0

这是不可能的。期。 – niksofteng

回答

0

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

我想知道为什么这对你很重要。如果仅仅因为你不希望别人能够继承它,就创建一个内部构造函数。

+0

不,我不想禁用继承,只是别人不应该知道这样的基类存在。这个类的存在的原因是为了避免在所有其他20多个类中拥有这些内部属性,并且在它们的所有类中拥有朋友程序集属性。 – bit

+0

如上所述,这是不可能的 –

+0

我想说明它可以从内部接口派生。不知道这对你是否有帮助。 –