2016-05-12 79 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

我想說明它可以從內部接口派生。不知道這對你是否有幫助。 –