Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带“的状态字段”;“给定值”;类C#(.NET Core)中的(有效值列表)_C#_Validation_.net Core_Parameters - Fatal编程技术网

带“的状态字段”;“给定值”;类C#(.NET Core)中的(有效值列表)

带“的状态字段”;“给定值”;类C#(.NET Core)中的(有效值列表),c#,validation,.net-core,parameters,C#,Validation,.net Core,Parameters,我是一名C#初学者,正在寻找在类中存储状态字段的简单选项 此字段应仅允许某些值,如“打开”、“拾取”、“打包”、“装运” 稍后,我想根据这个状态字段(按值)过滤订单集合 namespace Prototype.Models { 公共阶级秩序 { 公共字符串Id{get;} 公共字符串状态{get;} 公共int优先级{get;} 公共秩序(字符串id、字符串状态、整数优先级) { Id=Id; 状态=状态; 优先级=优先级; } } } 我读了一些关于Ienumerable的文章。但我不确定

我是一名C#初学者,正在寻找在类中存储状态字段的简单选项

此字段应仅允许某些值,如“打开”、“拾取”、“打包”、“装运”

稍后,我想根据这个状态字段(按值)过滤订单集合

namespace Prototype.Models
{
公共阶级秩序
{
公共字符串Id{get;}
公共字符串状态{get;}
公共int优先级{get;}
公共秩序(字符串id、字符串状态、整数优先级)
{
Id=Id;
状态=状态;
优先级=优先级;
}
}
}
我读了一些关于Ienumerable的文章。但我不确定

状态字段的类型并不重要,只要我可以过滤它。 一个字符串肯定会有帮助。类似于具有静态指定值的枚举

我还需要一个检查时,通过构造函数创建。有没有办法尝试或抛出异常

命名空间原型
{
班级计划
{
静态void Main(字符串[]参数)
{
var SampleOrder=新订单(“id001”,“拾取”,123);
Console.WriteLine(SampleOrder.Status);
}
}
}
不应该能够实例化通过构造函数方法接收状态参数“breaked”的对象


可能以后必须展开状态的有效值列表。但是,列表可以是静态的


如果状态是可读的(
public…{get;}
),它也有意义。这个返回值应该是一个“说话”值。

您必须定义枚举,类似于类,然后将其声明为类成员,如下所示

namespace Prototype.Models
{
    public enum OrderStatus
    {
        Open,
        Picked,
        Packaged,
        Shipped
    }

    public class Order
    {
        public string Id { get; }
        public OrderStatus Status { get; }
        public int Priority { get; }
    
        public Order(string id, OrderStatus status, int priority)
        {
            Id = id;
            Status = status;
            Priority = priority;
        }
    }
}

为什么不使用枚举?这正是他们的目的。因此打字是不可能的,例如,
“piked”
“可能会发生,状态的有效值列表以后必须展开。但是,列表可以是静态的。”那又怎样?它是变化的还是静态的?@HimBromBeere:我手动添加任何缺失的状态(在代码中),但这种情况很少发生。好的。这对我来说似乎是可以理解的。对不起,我以前从未在C#中使用过枚举。所以它写得像一门课。美好的我喜欢这样。非常感谢。