3

私は2つのクラスを持っています:

public class A
{
}

public sealed class B : A
{
}

そして、自分のBクラス (の同じアセンブリで定義されているA) だけが を継承できるようにしたいと考えていAます。
どのようにできるのか?

4

4 に答える 4

5

そして、B クラス (A の同じアセンブリで定義されている) だけが A を継承できるようにしたいのですが、どうすればよいですか?

その場合、継承の必要はありません..

public sealed class B
{
  //includes all methods of A and B
}
于 2012-10-26T11:52:20.117 に答える
2

コンストラクターを使用できますinternal。これにより、他のアセンブリがクラスを使用できなくなります。

public class A 
{
    internal A() { }    
}
public sealed class B : A { }

そして、パフォーマンスを気にしない場合:

public class A
{
    public A()
    {
        Type c = GetType();
        if (c != typeof(A) && c != typeof(B)) throw ....;
    }
}
于 2012-10-26T11:54:13.487 に答える
1

基本型メンバーの可視性を制限するには、継承ではなく構成を使用することをお勧めします。

于 2012-10-26T11:52:33.330 に答える
0

B だけが A を継承できる場合、そもそも継承が本当に必要ですか?

大きくなりすぎたクラスを分割する場合は、単一の責任を持つ可能性が低いため、適切なプラクティスに従っていません。

なんらかの厄介な理由で実際にこれが必要な場合は、それを試すことができます。

public class B
{
    private sealed class A : B
    {

    }
}

そして、あなたのニーズに合わせて微調整してください。

于 2012-10-26T11:54:30.667 に答える