网站首页 网站源码
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();
}
}
这段代码定义了一个名为 AvOpts
的类,主要用于管理视频处理参数。它继承自 List<OptionType>
,意味着 AvOpts
是一个特定类型的列表,专门用于存储 OptionType
对象。以下是代码的主要功能和结构的详细解释:
AvOpts
类用于存储视频处理的参数选项。MaxCount
,表示该类实例中最多可以包含的 OptionType
对象的数量(最大为 10)。AvOpts()
:无参数的构造函数,初始化一个空的 AvOpts
实例。AvOpts(ICollection<OptionType> items)
:接受一个 ICollection<OptionType>
类型的参数,并将其添加到 AvOpts
实例中。Add(OptionType item)
:重写了 List
的 Add
方法。在添加新项之前,它会检查当前列表的数量是否已达到最大限制。如果已达到最大数量,则抛出 InvalidOperationException
异常。
AddRange(ICollection<OptionType> items)
:此方法允许批量添加多个 OptionType
对象。它首先计算出可以添加的最大数量(即 MaxCount
减去当前数量),然后将最多 c
个项添加到列表中。
ToString()
:重写了 ToString
方法,用于将 AvOpts
实例转换为字符串。它遍历列表中的每个 OptionType
对象,并根据其 Value
属性的类型生成相应的字符串表示:
Value
是布尔值,则转换为小写字符串(true
或 false
)。Value
为 null
,则返回空字符串。ToString()
方法获取其字符串表示。最终,所有的参数以特定格式(/{Name}/{Value}
)连接在一起,形成一个完整的字符串。
AvOpts
类提供了一种结构化的方式来管理视频处理的参数选项,限制了参数的数量,并提供了方便的字符串表示方法,适合在视频处理相关的应用中使用。