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

内部インターフェイスから派生させることができます。それが何らかの形で役に立つかどうかはわかりません。 –

関連する問題