【发布时间】:2021-04-22 23:27:25
【问题描述】:
我是一名 C# 初学者,正在寻找一个简单的选项来在类中存储状态字段。
此字段应仅允许某些值,例如“open”、“picked”、“packaged”、“shipped”。
稍后我想根据此状态字段(按值)过滤一组订单。
namespace Prototype.Models
{
public class Order
{
public string Id { get; }
public string Status { get; }
public int Priority { get; }
public Order(string id, string status, int priority)
{
Id = id;
Status = status;
Priority = priority;
}
}
}
我读过一些关于 Ienumerable 的文章。但我不确定。
状态字段的类型并不重要,只要我可以过滤它。 字符串肯定会有所帮助。类似于具有静态指定值的枚举。
通过构造函数创建时我还需要检查。有没有办法尝试或抛出异常?
namespace Prototype
{
class Program
{
static void Main(string[] args)
{
var SampleOrder = new Order("id001", "picked", 123);
Console.WriteLine(SampleOrder.Status);
}
}
}
应该不可能通过构造方法实例化一个接收状态参数“broken”的对象。
也许稍后必须扩展状态的有效值列表。但是,列表可以是静态的。
如果状态是可读的 (public ... {get;}) 也是有意义的。那么这个返回值应该是一个“说话”的值。
【问题讨论】:
-
为什么不使用枚举?这正是他们的目的。
-
所以拼写错误是不可能的,例如
"piked". -
"可能会发生状态的有效值列表必须稍后扩展。但是,该列表可以是静态的。"所以呢?它是变化的还是静态的?
-
@HimBromBeere:我手动添加任何缺失的状态(在代码中),但这种情况很少发生。
标签: c# validation .net-core parameters