0

私は現在、ラッパークラスで1つずつ手動で設定することなく、ラッパークラスがラップしているもののプロパティを公開する方法を理解しようとしています。これが良いデザインの選択なのか、それとも完全に見当違いで、これを行うことで非常に悪い場所に行っているのかを理解しようとしています.

また、すでにラッパークラスが何かを継承しています...

以下のコード例 (偽のオブジェクトなので、読み込まないでください):

public class Car {
    public String Name { get; set; }
    public String Status { get; set; }
    public String Type { get; set; }

    public Car(takes params) {
        // makes car!
    }
}

public class CarWrapper : OtherAutomotiveRelatedThing {
    public Car car;        

    public CarWrapper(Car c) {
        car = c;
    }
}

public class OtherAutomotiveRelatedThing {
    public String Property1 { get; protected set; }
    public String Property2 { get; protected set; }
}

基本の Car クラスを変更できず、他の自動車のプロパティが必要なため、ラッパー オブジェクトで継承を使用しています。その他の複数のクラスも、OtherAutomotiveRelatedThing から継承しています。

CarWrapper オブジェクトのリストを Json として返します (Web アプリを構築しているため) が、ラッパー オブジェクトが問題を引き起こしています。Json にキャスト/変換すると、リスト内の CarWrapper オブジェクトにはすべて別のネストされたオブジェクトが含まれます。使用している Car オブジェクトとフレームワークは、必要なことを行うためにそのプロパティを取得できません。

次の操作を行わずに、ラップされた Car オブジェクトのプロパティを CarWrapper の「トップレベル」で公開する方法はありますか?

public class CarWrapper : OtherAutomotiveRelatedThing {
    public Car car; 
    public String Name { get; private set; }
    public String Status { get; private set; }
    public String Type { get; private set; }

    public CarWrapper(Car c) {
        car = c;
        this.Name = c.Name;
        this.Status = c.Status;
        this.Type = c.Type;
    }
}

ご不明な点がございましたら、ご不明な点がございましたら、お気軽にお問い合わせください。

ありがとう!

4

1 に答える 1

1

私にとってprototypeは、OOP で使用されていない JavaScript のようなスタイルのプログラミングが必要なようです。

「(異なるプロパティが設定された) 2 つの異なるカー ラッパーがある場合、それらのいずれかにメソッドを渡すにはどうすればよいでしょうか?」と考えることから始めるとよいでしょう。または「車と動物をラップする単一のラッパーを使用できますか」、および「車と動物のように、同じ名前で異なる意味を持つパブリックプロパティを公開するにはどうすればよいskin colorですか?」等

回答は、インターフェイス、パブリック オブジェクトを公開するラッパー、純粋なカプセル化、言語を JavaScript に変更する必要があるかどうかを特定するのに役立ちます。

于 2013-04-17T09:49:13.757 に答える