using System.Text;

namespace Dpz.Core.Service.ObjectStorage.VideoHandle;

/// <summary>
/// 视频处理参数
/// </summary>
public class AvOpts : List<OptionType>
{
    private const int MaxCount = 10;

    public AvOpts() { }

    public AvOpts(ICollection<OptionType> items)
    {
        AddRange(items);
    }

    public new void Add(OptionType item)
    {
        if (Count >= MaxCount)
        {
            throw new InvalidOperationException("The maximum number of items has been reached.");
        }
        base.Add(item);
    }

    public void AddRange(ICollection<OptionType> items)
    {
        var c = Math.Max(MaxCount - Count, 0);
        if (c > 0)
        {
            base.AddRange(items.Take(c));
        }
    }

    public override string ToString()
    {
        var sb = new StringBuilder();
        foreach (var item in this)
        {
            var value = item.Value switch
            {
                bool bv => bv.ToString().ToLower(),
                null => "",
                _ => item.Value.ToString(),
            };
            sb.Append($"/{item.Name}/{value}");
        }
        return sb.ToString();
    }
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

这是一个名为 AvOpts 的类,用于处理视频处理参数。让我详细解释一下这个代码:

类的基本结构

public class AvOpts : List<OptionType>
  • AvOpts 继承自 List<OptionType>,是一个专门用于存储视频处理选项的集合类
  • 属于 Dpz.Core.Service.ObjectStorage.VideoHandle 命名空间

主要特性

1. 数量限制

private const int MaxCount = 10;
  • 限制最多只能添加 10 个选项项

2. 构造函数

public AvOpts() { }
public AvOpts(ICollection<OptionType> items) { AddRange(items); }
  • 提供无参构造函数和带初始集合的构造函数

3. 重写的 Add 方法

public new void Add(OptionType item)
{
    if (Count >= MaxCount)
    {
        throw new InvalidOperationException("The maximum number of items has been reached.");
    }
    base.Add(item);
}
  • 使用 new 关键字隐藏基类的 Add 方法
  • 添加数量限制检查,超过 10 个项目时抛出异常

4. 重写的 AddRange 方法

public void AddRange(ICollection<OptionType> items)
{
    var c = Math.Max(MaxCount - Count, 0);
    if (c > 0)
    {
        base.AddRange(items.Take(c));
    }
}
  • 计算还能添加的项目数量
  • 只添加不超过限制的项目数量(静默截断,不抛异常)

5. ToString 方法

public override string ToString()
{
    var sb = new StringBuilder();
    foreach (var item in this)
    {
        var value = item.Value switch
        {
            bool bv => bv.ToString().ToLower(),
            null => "",
            _ => item.Value.ToString(),
        };
        sb.Append($"/{item.Name}/{value}");
    }
    return sb.ToString();
}
  • 将所有选项格式化为字符串
  • 格式为:/选项名/值/选项名/值...
  • 特殊处理:
    • 布尔值转换为小写字符串
    • null 值转换为空字符串
    • 其他类型调用 ToString() 方法

使用场景

这个类很可能用于构建视频处理的参数字符串,比如:

var opts = new AvOpts();
opts.Add(new OptionType { Name = "format", Value = "mp4" });
opts.Add(new OptionType { Name = "quality", Value = "high" });
opts.Add(new OptionType { Name = "compress", Value = true });

string result = opts.ToString(); 
// 输出类似:"/format/mp4/quality/high/compress/true"

这种格式很可能是某个视频处理服务或API所需要的参数格式。

评论加载中...