.NET で入れ子になった型が関係する特定のシナリオに関しては、どのような良い習慣があるのか知りたいです。
Wheel クラスがあり、Wheel クラスが Bearing オブジェクトを保持しているとします。Bearing オブジェクトは Wheel 内でのみ意味があり、独立して作成することは望ましくないため、Bearing クラスを Wheel オブジェクト内にネストすることは理にかなっています。ただし、Wheel クラスの外部で Wheel.Bearings プロパティを読み取る必要があるシナリオがあるとします。これには、ネストされた Bearing クラスを public にする必要があります。
この状況では、最良の選択肢は何ですか?
1 - Wheel クラス内にネストされた public Bearing クラス
を作成します。 2 - コンストラクターで Wheel オブジェクトを受け取る独立した Bearing クラスを
作成します。 3 - Wheel 名前空間を作成し、この名前空間内に独立した Bearing クラスを作成します。
4 - 他に何か?
更新: 詳細を更新し、これまでのいくつかの提案を反映させます。ClassParent は親クラス、ClassChild は子クラスです。ClassChild は常に ClassParent の子であり、単独で存在する意味はありません。問題は、ClassChild にはパブリックに公開する必要があるいくつかのプロパティがあり、残りはすべて ClassParent からのみ呼び出す必要があることです。例としては、ClassParent が適切なクリーンアップと変更を実行する必要があるため、ClassParent からのみ呼び出す必要があるため、公開すべきではない ClassChild.Delete 関数があります。
提案を確認した後、私が思いついたデザインは少し汚れているように見えるので、意見を求めようと思いました. 私は持っている:
public class Parent
{
ChildNested childObj
public DeleteChild()
{
//expose this method publically
childObj.DeleteChild()
//other functionality
}
public Child GetChild()
{
//expose Child, not ChildNested publically
return childObj
}
private class ChildNested:Child
{
public Child()
{
Base.Child()
}
public DeleteChild()
{
Base.Delete()
}
}
public abstract class Child
{
protected Child()
{
}
protected Delete()
{
}
public PublicPropertyToExpose()
{
}
}