Tips - How to implement the same code with different parameters

advertisements

I would like an advice. My project have a lot of equals methods with different values, and i would like to do a single method that does the same.

The methods are this:

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));
}

This is the enums:

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

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

public enum ENUM3
{
    Code = 6,
    Info = 27
}

There is only a way to create a method by inserting the input type of enum to use? maybe a similar solution of this:

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));
}


I think something like this is what you are looking for:

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

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

Or this, depending on how you want to use it:

private void General(Type enumType)
{
   var values = Enum.GetValues(enumType);
   foreach(var value in values)
       Console.WriteLine(value);
}

General(typeof(Enum1));
General(typeof(Enum2));
General(typeof(Enum3));