是否可以通过编程方式检索开关的所有情况?我不知道,也许是 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/