C#枚举类型共享多个类

时间:2017-08-27 07:04:45

标签: c# enums

我正在努力寻找处理以下情况的最优雅方式:

class ObjectA
{
    public enum MandatoryParameters {A, B, C}
    public enum OptionalParameters {D, E, F}
}
class ObjectB
{
    public enum MandatoryParameters {G, H, I}
    public enum OptionalParameters {J, K}
}
class Error
{
    MandatoryOrOptionalParameters param;
    string errorDescription;

    Error(MandatoryOrOptionalParameters p, string d)
    {
        param = p;
        errorDescription = d;
    }
}

有没有什么好方法可以创建MandatoryOrOptionalParameters类型以避免string?我阅读了一些相关消息herehere

1 个答案:

答案 0 :(得分:2)

创建一个表示任何类型参数的枚举,然后每个类将获取或指定表示可选参数或强制项的项集合:

public enum Parameters { A, B, C, D, E }

// Class specifies for itself the mandatory and optional
public class Foo
{
    public IEnumerable<Parameters> Mandatory { get; set; } = new List<Parameters> { A, B };

    public IEnumerable<Parameters> Optional { get; set; } = new List<Parameters> { C, D };
}

// Class receives what are the mandatory and optional
public class Bar
{
    public Bar(IEnumerable<Parameter> optional, IEnumerable<Parameter> mandatory)
    {
        // store input
    }
}