是否可以通过编程方式检索开关的所有情况?我没有任何想法,也许是通过IL,但不确定如何做...
实际上,我的全局问题如下:我有一个siwtch案例,其字符串为属性名。该方法非常重要,不允许回归。我不想进行重构,所以我想要一种方法来测试所有大小写字符串实际上是对象的真实属性。 (注意:默认值返回了一些东西,所以我不能为重构的无效值抛出exceptionino)。
最佳答案
有一些方法可以避免在代码中直接使用属性名称作为字符串。我已经发布了一个代码段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# - C#遍历switch的大小写,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1361197/