C# 遍历 switch 的案例

标签 c# switch-statement il

是否可以通过编程方式检索开关的所有情况?我不知道,也许是 IL 但不知道该怎么做......

事实上,我的全局问题如下:我得到了一个以字符串作为属性名称的 siwtch 案例。方法很重要,不允许倒退。我不想重构破坏它,所以我想要一种方法来测试所有大小写字符串实际上都是我的对象的真实属性。 (注意:默认值返回一些东西,所以我不能为重构的无效值抛出异常)。

最佳答案

有一些方法可以避免在代码中直接将属性名称用作字符串。我发布了一个代码片段 here .

然后,不使用 switch 语句,而是实现如下内容:

private IDictionary<string, Action> _actions;

public void RegisterAction(string propertyName, Action action)
{
    _actions.Add(propertyName, action);
}

public void DoSomething(string propertyName)
{
    _actions[propertyName]();
}

当您调用这两种方法时,请确保您使用代码片段的 Member 类(参见链接)而不是直接使用属性名称。因此,您可以确保您的代码是可重构的,因为它不包含任何“魔术字符串”。

最好的问候

关于C# 遍历 switch 的案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1361197/

相关文章:

c# - 光标位置改变事件

c# - Math.Round() 实际上并没有四舍五入我的 double

c++ - 我无法让循​​环工作,当我按下按钮退出我的开关时它不起作用

javascript - jquery switch 来更改附加到的列表

c# - 动态 IL 方法导致 "Operation could destabilize the runtime"

c# - ldc.i4.s 和 ldc.i4 有什么区别?

.net - 有没有办法在没有 GoTo 语句的情况下写这个?

c# - ado.net 到 viewmodel 映射的自动映射器示例

c# - 常量枚举中的循环定义

c++ - 切换大小写拒绝将常量识别为已初始化