gpt4 book ai didi

c# - 建模多种帖子类型

转载 作者:太空宇宙 更新时间:2023-11-03 13:52:01 25 4
gpt4 key购买 nike

让我举一个很好的例子来说明我的问题。

假设我正在构建一个应用程序,许多用户可以在其中发布不同类型的“帖子”(即照片、状态等)。对于这种情况,我们只使用照片和状态。

我将向您展示我目前如何对数据建模,以及是否可以改进(以及我做错了什么)

我有一个通用的 Post 类:

public class Post<T>
{
public Guid Id { get; set; }

public User Owner { get; set; }

public DateTime CreatedDate { get; set; }

public PostType Type { get; set; }

public T Data { get; set; }
}

然后我有一个 PostType 枚举:

public enum PostType
{
Photo,
Status
}

然后我有我各自的照片和状态类

public class Photo
{
public string Url { get; set; }

public int Width { get; set; }

public int Height { get; set; }
}

public class Status
{
public string Text { get; set; }
}

我知道,如果我采用目前的解决方案来对这些数据进行建模,我会遇到问题。

我已经遇到了一些痛点,例如如何返回最新的 25 篇帖子,无论类型如何以及如何通过 Id 返回特定的帖子没有指定帖子的类型(因为用户不应该关心。

我的数据建模是否完全错误?如果是这样,您有什么改进建议吗?

最佳答案

你的两个问题都可以通过拥有一个独立于帖子类型的基类来解决:

public abstract class Post
{
public Guid Id { get; set; }

public User Owner { get; set; }

public DateTime CreatedDate { get; set; }

public PostType Type { get; set; }
}

然后您的 Post 类可以从它继承:

public class Post<T> : Post
{
public T Data { get; set; }
}

应该返回任何类型的帖子的方法仍然可以返回正确的类型,但调用者将访问它们作为基本 Post 类型并在需要时转换它们:

Post GetPostById(int id);
IEnumerable<Post> GetLatestPosts(int count);

关于c# - 建模多种帖子类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13448323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com