如果我的问题看起来非常愚蠢,请提前向您道歉,但出于某种原因,我无法找到更优雅的解决方法。因此,我有一个类似于以下代码块的利用switch-case块的方法:
public enum Items
{
item_1, item_2, item_3, .... item_N
};
private string String_1 {get; set;}
private string String_2 {get; set;}
private string String_3 {get; set;}
// ...
private string String_N {get; set;}
public void DoSomething(Items item){
switch(item){
case item_1:
MethodNumberOne();
MethodNumberTwo();
MethodNumberThree();
Console.WriteLine($"{0} is displayed on the page", String_1);
break;
case item_2:
MethodNumberOne();
MethodNumberTwo();
MethodNumberThree();
Console.WriteLine($"{0} is displayed on the page", String_2);
break;
case item_3:
MethodNumberOne();
MethodNumberTwo();
MethodNumberThree();
Console.WriteLine($"{0} is displayed on the page", String_3);
break;
// ...
case item_N:
MethodNumberOne();
MethodNumberTwo();
MethodNumberThree();
Console.WriteLine($"{0} is displayed on the page", String_N);
从上面的示例可以看出,switch语句调用的是相同的方法,唯一的区别是最后一个Console调用。
我的问题是:是否有更优雅的方式来处理这种情况,因为我不太喜欢代码的重复。到目前为止,我尝试将Items枚举移到单独的类中并将其作为参数传递,但这种方法在C#中无法通过静态类作为参数传递。
public static class Items {
public string String_1 {get; set;}
public string String_2 {get; set;}
public string String_3 {get; set;}
// ...
private string String_N {get; set;}
}
// ....
public void DoSomething(Items item)
- 不允许声明此方法
非常感谢您的建议..
Dictionary<Items, string>
。 - Ben Cottrell