サブクラスを返すための静的ファクトリメソッドを持つ抽象クラスがあります。
public abstract class ITop {
public static ITop MakeMeOne(whatever x) {
if(x == something) {
return BottomA(x);
}
else {
return BottomB(x);
}
}
}
public class BottomA : ITop {
public BottomA(whatever x) {}
}
public class BottomB : ITop {
public BottomB(whatever x) {}
}
世界の他の部分 (同じアセンブリ内の無関係なクラスを含む)の実装BottomA
を非表示にしたいと思います。BottomB
そのため、 からのみアクセスできますITop
。これは簡単に思えますが、それを行うための正しいアクセサーの組み合わせを見つけることができませんでした。
編集:
すべてを内部化できるとさまざまな人が指摘していますが、同じアセンブリ内のクラスから隠すことが重要な要件であるため、それでは解決しません。