c# - 用不同类型的对象填充列表

标签 c# wrapper

我正在研究一种一切正常的推荐算法。但是现在我想将这段代码实现到我的开发团队的分支中。

我将从头开始。我的算法可以推荐两种类型的对象,餐厅和菜肴。

餐厅:

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 并从不是 null 的属性中检索值。

我只是不确定这是否是正确的方法。这样做有什么“最佳做法”吗?如果我应该详细说明,请告诉我!

最佳答案

如果它们没有共同的基类,那么创建一个包装类是最好的解决方案。同时你可以更灵活地创建类似的东西

public class RecommendationItem
{
    public Guid Id { get; set; }
    public string Name { get; set; }
    public string PageUrl { get; set; }
    public object Entity { get; set; }
}

所以你可以在这个类中包含所有的公共(public)信息,客户将不需要检查他使用的是哪种对象类型。在这种情况下,再添加一种项目类型会更容易。在同一类型中,我添加了对实体本身的引用 - 如果需要对一种或两种项目类型进行某些特定处理,则可以使用它。

关于c# - 用不同类型的对象填充列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41124085/

相关文章:

c# - 如何在不启动任务的情况下构建任务?

c# - 在 AWS Lambda For .net 上配置 CORS 响应 header

c# - 在 C# 中向后计算增值税总是返回 0

java - 如何检查 boolean 值是否为空?

php - PDO 包装器返回 NULL

c++ - 如何编写函数和成员函数的包装器,在包装函数之前和之后执行一些代码?

python - 如何在f2py中链接FFTW3?

c# - 如何在 Unity 中创建一个可以显示由许多小图像组成的纹理的着色器

java - 用通用功能包装代码,同时传递参数

c# - .NET:如何开发用户可以使用鼠标进行电子签名的功能?