我喜歡使用新的API我ServiceStack,並有一些遺留項目中的Pocos,我希望保持不變。然而,在我的ServiceStack項目中,將它們複製到Dto的感覺有點不明智。我是否可以懶惰,並以某種方式「傳遞」我的遺產pocos?使用現有的Poco作爲ServiceStack DTO
這一方法在JsonServiceClient不錯,但增加了一個額外水平的JSON,這是我不喜歡的:
[Route("/legacytype", "POST,OPTIONS")]
public class RequestLegacyTypePost : IReturn<int>
{
public LegacyTypeLegacyType{ get; set; }
}
public class LegacyTypeService : Service
{
public object Post(RequestLegacyTypePost request)
{
return db.Insert(request.LegacyType);
}
}
複製正糊化特性的DTO的方式自然正常工作:
[Route("/legacytype", "POST,OPTIONS")]
public class RequestLegacyTypePost : IReturn<int>
{
public int Id { get; set; }
public string SomeProp { get; set; }
public string OtherProp { get; set; }
}
也許那簡單是最佳實踐?
我測試了BiffBaffBoffs的建議,它似乎是拾取繼承模型的道具,它非常整潔,對於我目前看不到的方法有什麼缺點? – joeriks 2013-03-20 14:42:27
不是真正的繼承在請求DTO上工作正常,我只是通常不喜歡[推薦DTO內的繼承](http://stackoverflow.com/a/10759250/85785)。 – mythz 2013-03-20 14:46:55
好吧,明白了。當我使用Routes.Add時,甚至有可能讓新的api獲得LegacyType路由映射嗎?所以我可以使用JsonServiceClient,client.Post(legacyTypeObject) – joeriks 2013-03-20 15:07:56