我正在推薦的算法,一切正常。但是現在我想將這些代碼實現到我的開發團隊的分支中。不同類型的對象填充列表
我會從頭開始。我的算法可以推薦2種類型的對象,餐廳和菜餚。
餐廳:
public class Restaurant
{
public Guid Id { get; set; }
public string Name { get; set; }
public Address Address { get; set; }
public List<Tag> Tags { get; set; } = new List<Tag>();
public int PriceRange { get; set; }
}
而且菜:
public class Dish
{
public Guid Id { get; set; }
public string Name { get; set; }
public double Price { get; set; }
public virtual Restaurant rest { get; set; }
[ForeignKey("rest")]
public Guid RestaurantId { get; set; }
public List<Tag> Tags { get; set; }
}
現在我的產品負責人希望該列表是這樣的,當它被我們的應用程序的主頁上提出:
[Restaurant][Dish][Restaurant][Dish] Etc...
所以基本上,他想交替推薦的對象類型。這些菜餚和餐館是完全分開的。它們是由我的算法純粹根據用戶的喜好生成的,與其他人完全沒有關係。
現在我的問題是如何返回這樣的列表。我想我需要一個包裝類,其中包含無論是Restaurant
或Dish
這樣的:
public class RecommenderItem
{
public Restaurant rest { get; set; }
public Dish dish { get; set; }
}
這樣我可以創建一個List<RecommenderItem>
並返回給客戶端。客戶端只需要檢查哪個屬性爲null,並從不是的那個中檢索值。我只是不確定這是否是正確的方法。這樣做有沒有什麼「最佳做法」?讓我知道我是否應該詳細說明一下!
我個人倒有兩類實現它公開共享屬性,如'Id'接口和'Name'(例如'Tags')並創建一個該接口的列表(該接口也可以暴露一個'Type'用於交替) –
RecommenderItem'聽起來像是完全正確的解決方案,因爲它出現了這是一個菜單列表,每個菜單都與一家餐館相關聯。你的返回類型應該反映出來,就像它一樣。 –
@ Me.Name但客戶端想要顯示來自每個對象的所有數據,是不是會導致問題? – RandomStranger