C# 建议-如何使用不同的参数实现相同的代码
我想要一个建议。我的项目有很多不同值的equals方法,我想用一个方法来做同样的事情 方法如下: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
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();
}