私は2つのクラスを持っています:
public class A
{
}
public sealed class B : A
{
}
そして、自分のB
クラス (の同じアセンブリで定義されているA
) だけが を継承できるようにしたいと考えていA
ます。
どのようにできるのか?
私は2つのクラスを持っています:
public class A
{
}
public sealed class B : A
{
}
そして、自分のB
クラス (の同じアセンブリで定義されているA
) だけが を継承できるようにしたいと考えていA
ます。
どのようにできるのか?
そして、B クラス (A の同じアセンブリで定義されている) だけが A を継承できるようにしたいのですが、どうすればよいですか?
その場合、継承の必要はありません..
public sealed class B
{
//includes all methods of A and B
}
コンストラクターを使用できます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 ....;
}
}
基本型メンバーの可視性を制限するには、継承ではなく構成を使用することをお勧めします。
B だけが A を継承できる場合、そもそも継承が本当に必要ですか?
大きくなりすぎたクラスを分割する場合は、単一の責任を持つ可能性が低いため、適切なプラクティスに従っていません。
なんらかの厄介な理由で実際にこれが必要な場合は、それを試すことができます。
public class B
{
private sealed class A : B
{
}
}
そして、あなたのニーズに合わせて微調整してください。