C# 建议-如何使用不同的参数实现相同的代码

C# 建议-如何使用不同的参数实现相同的代码,c#,.net,wpf,enums,C#,.net,Wpf,Enums,我想要一个建议。我的项目有很多不同值的equals方法,我想用一个方法来做同样的事情 方法如下: private void Enum1() { Console.WriteLine(Enum.GetValue(ENUM1.Code)); Console.WriteLine(Enum.GetValue(ENUM1.Info)); } private void Enum2() { Console.WriteLine(Enum.GetValue(ENUM2.Code

我想要一个建议。我的项目有很多不同值的equals方法,我想用一个方法来做同样的事情

方法如下:

private void Enum1()
{   
    Console.WriteLine(Enum.GetValue(ENUM1.Code));
    Console.WriteLine(Enum.GetValue(ENUM1.Info));
}

private void Enum2()
{   
    Console.WriteLine(Enum.GetValue(ENUM2.Code));
    Console.WriteLine(Enum.GetValue(ENUM2.Info));
}

private void Enum3()
{   
    Console.WriteLine(Enum.GetValue(ENUM3.Code));
    Console.WriteLine(Enum.GetValue(ENUM3.Info));
}
这是枚举:

public enum ENUM1
{
    Code = 1,
    Info = 3
}

public enum ENUM2
{
    Code = 91,
    Info = 4
}

public enum ENUM3
{
    Code = 6,
    Info = 27
}
只有一种方法可以通过插入要使用的枚举的输入类型来创建方法?可能是类似的解决方案:

private void General("ENUM1")
{   
    var type = ENUM1;

    switch (p)
    {
        case "ENUM1":
            type = ENUM1;
        case "ENUM2":
            type = ENUM2;
        case "CASALINGHI":
            type = ENUM3;

        default:
            type = ENUM1;
        }

    Console.WriteLine(Enum.GetValue(type.Code));
    Console.WriteLine(Enum.GetValue(type.Info));
}

我想这就是你想要的:

private void General<T>()
{
   var values = Enum.GetValues(typeof(T));
   foreach(var value in values)
       Console.WriteLine(value);
}

General<Enum1>();
General<Enum2>();
General<Enum3>();

既然可以轻松使用类,为什么还要继续使用枚举?阅读有关面向对象编程的更多信息

创建单个类:

public class MyEnum
{
    public int Code
    {
        get; set;
    }
    public int Info
    {
        get; set;
    }

    public string Display()
    {
        Console.WriteLine(this.Code);
        Console.WriteLine(this.Info)
    }

    //
    // This will keep your enums static, available from any method
    //
    private static List<MyEnum> _globals = new List<MyEnum();

    public static List<MyEnum> Globals ()
    {
        if (this._globals.Count == 0)
        {
            this._globals.Add(new MyEnum(){ Code = 1, Info = 3 });
            this._globals.Add(new MyEnum(){ Code = 91, Info = 4 });
            this._globals.Add(new MyEnum(){ Code = 6, Info = 27 });
        }

        return this._globals;
    }
}

请研究与此类似的解决方案,因为您的枚举显然代表一些数据。

我已编辑了您的标题。请看,“,其中的共识是“不,他们不应该”。我不认为Enum是这里的最佳选择。考虑使用属性>代码>代码<代码>和<代码>信息> /代码>创建类或结构。然后,所有不同的枚举都可以表示为同一类的实例;您可以简单地创建一个方法yourclass.writeToConsole(),它实现了与您所知道的所有静态方法相同的功能,但我使用它是因为实际上每个枚举都有其字符串值
StringValue(“n | 11:5 | 0”)]code=1、
和参数?我必须有一个参数来选择打印哪个枚举(枚举1、枚举2、枚举3)。您可以选择。是类型参数。
public class MyEnum
{
    public int Code
    {
        get; set;
    }
    public int Info
    {
        get; set;
    }

    public string Display()
    {
        Console.WriteLine(this.Code);
        Console.WriteLine(this.Info)
    }

    //
    // This will keep your enums static, available from any method
    //
    private static List<MyEnum> _globals = new List<MyEnum();

    public static List<MyEnum> Globals ()
    {
        if (this._globals.Count == 0)
        {
            this._globals.Add(new MyEnum(){ Code = 1, Info = 3 });
            this._globals.Add(new MyEnum(){ Code = 91, Info = 4 });
            this._globals.Add(new MyEnum(){ Code = 6, Info = 27 });
        }

        return this._globals;
    }
}
foreach (MyEnum* en in MyEnum.Globals())
{
    en.Display();
}