using System.ComponentModel.DataAnnotations;
using Dpz.Core.Entity.Base.Image;

namespace Dpz.Core.Public.ViewModel.Request;

/// <summary>
/// 文章创建
/// </summary>
public class CreateArticleRequest
{
    /// <summary>
    /// 标题
    /// </summary>
    [Required]
    public required string Title { get; set; }

    /// <summary>
    /// 文章内容 Markdown
    /// </summary>
    [Required]
    public required string Markdown { get; set; }

    /// <summary>
    /// 标签
    /// </summary>
    [Required]
    public List<string> Tags { get; set; } = [];

    /// <summary>
    /// 简介
    /// </summary>
    [Required]
    public string? Introduction { get; set; }

    /// <summary>
    /// 来源
    /// </summary>
    public string? From { get; set; }

    /// <summary>
    /// 发布时间
    /// </summary>
    public DateTime? PublishTime { get; set; }

    /// <summary>
    /// 分类
    /// </summary>
    public List<string> Categories { get; set; } = [];

    /// <summary>
    /// 广告权重
    /// </summary>
    public double AdWeight { get; set; }

    /// <summary>
    /// 主图片元信息
    /// </summary>
    public ImageMetadata? MainImageMetadata { get; set; }

    /// <summary>
    /// 文章相关图片的元信息
    /// </summary>
    public List<ImageMetadata> Images { get; set; } = [];
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

代码解释

这是一个 C# 的数据传输对象(DTO)类,用于处理创建文章的请求数据。以下是详细解释:

命名空间引用

  • System.ComponentModel.DataAnnotations - 提供数据验证特性
  • Dpz.Core.Entity.Base.Image - 自定义的图片元数据实体命名空间

类定义:CreateArticleRequest

这是一个用于接收创建文章请求的视图模型类,包含以下属性:

必填字段(带 [Required] 特性)

  1. Title (string)

    • 文章标题
    • required 关键字确保在对象初始化时必须赋值
  2. Markdown (string)

    • 文章内容,使用 Markdown 格式
    • 必填字段
  3. Tags (List)

    • 文章标签列表
    • 默认初始化为空列表 []
  4. Introduction (string?)

    • 文章简介
    • 可空类型(?),虽然标记为 Required,但允许 null 值

可选字段

  1. From (string?)

    • 文章来源
    • 可空字段
  2. PublishTime (DateTime?)

    • 发布时间
    • 可空,如果不指定可能使用默认值
  3. Categories (List)

    • 文章分类列表
    • 默认初始化为空列表
  4. AdWeight (double)

    • 广告权重
    • 用于控制广告展示的权重值
  5. MainImageMetadata (ImageMetadata?)

    • 主图片的元信息
    • 可空,可能包含图片尺寸、路径等信息
  6. Images (List)

    • 文章相关图片的元信息列表
    • 默认初始化为空列表

设计特点

  • 使用了 C# 11+ 的 required 修饰符确保关键属性必须初始化
  • 使用集合表达式 [] 进行列表初始化(C# 12 特性)
  • 采用数据注解进行验证
  • 结构清晰,适合 Web API 请求绑定和验证
评论加载中...