我目前正在試圖弄清楚如何讓一個包裝類暴露包裝的任何它的屬性,而不必手動設置它們在包裝類中一個接一個。我一直在試圖弄清楚這是否是一個很好的設計選擇,或者如果我完全被誤導了,並且通過這樣做進入一個非常糟糕的地方™。有一個包裝對象暴露其wrapee的屬性
我也已經有了我的包裝類繼承的東西...
如下代碼示例(假的對象,所以不要讀入他們請):
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對象和我正在使用的框架無法獲取其所需的屬性。
有沒有辦法在CarWrapper的「頂級」,露出包裹Car對象的屬性,而無需執行下列操作:
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;
}
}
請讓我知道如果我沒有說清楚,如果你有任何問題,或需要/想要更多的信息。
謝謝!
你想解決這個問題,爲您的JSON需要,或純粹在C#?前者不是真正的OOP,它運行在與C#不同的平臺上。 – Kelmen
我想在C#中處理這個問題。我和Json一起提出的問題只是一個症狀,隨意忽略這一點。我覺得我現在有一個次優的解決方案,當把它序列化到Json時,這個問題是我看到的第一個問題,如果我沒有解決我的代碼的底層對象模型(這是正確的方式 - 我想確保我已經編寫了我的類,繼承等等......正確的方法嗎?) –
您是否可以使OtherCarRelatedThing繼承自DynamicObject?如果是這樣,我可以提出使用該機制的解決方案。 – Brannon