私はすべて正常に動作する推奨アルゴリズムを開発中です。しかし今、私はこのコードを私の開発チームの支店に実装したかったのです。異なる種類のオブジェクトでリストを塗りつぶす
私は上から開始します。私のアルゴリズムは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...
基本的に、彼は推奨されているオブジェクトの種類を交互にしたいと考えています。これらの料理とレストランは完全に別です。それらは私のアルゴリズムによって純粋にユーザーの好みに基づいて生成され、お互いに全く相関がありません。
私の問題は、このようなリストを返す方法です。私はList<RecommenderItem>
作成し、クライアントにそれを返すことができ
public class RecommenderItem
{
public Restaurant rest { get; set; }
public Dish dish { get; set; }
}
この方法:私は、私はこのようなどちらかRestaurant
またはDish
が含まれているラッパークラスを必要とするはずと考えました。クライアントは、どの属性がヌルであるかをチェックし、ヌルでない値から値を取り出すだけで済みます。
これが正しいアプローチであるかどうかは分かりません。これにはベストプラクティスがありますか?私がもっと詳しく説明する必要があるかどうかを教えてください!
は個人的に私は、このようなId' 'などの共有の性質を、公開するインターフェイスを実装し、両方のクラスを持っていると思いますと 'Name'(例えば' Tags')を作成し、そのインターフェースのリストを作成します(インターフェースは '' Type''をエクスポーズすることもできます) –
'RecommenderItem'は、それはそれぞれのレストランに関連付けられている料理のリストです。あなたの戻り値の型はそれを反映するはずです。 –
@ Me.Nameでも、クライアントは各オブジェクトのすべてのデータを表示したいと考えていますが、問題はありませんか? – RandomStranger