C# 使用switch语句改进助手的更好方法
我有一个html助手,它从列表中获取小部件对象,然后将其呈现为html代码:C# 使用switch语句改进助手的更好方法,c#,asp.net-mvc,switch-statement,helper,C#,Asp.net Mvc,Switch Statement,Helper,我有一个html助手,它从列表中获取小部件对象,然后将其呈现为html代码: @helper RenderWidgetByType(Widget widget) { @RenderWidgetHeader(widget.Header); switch (widget.Type) { case "Table": @RenderGrid((Grid)widget); break; case "Donut": @RenderDonut((Do
@helper RenderWidgetByType(Widget widget)
{
@RenderWidgetHeader(widget.Header);
switch (widget.Type)
{
case "Table": @RenderGrid((Grid)widget); break;
case "Donut": @RenderDonut((Donut)widget);break;
}
}
我有以下课程:
public class Widget{}
public interface IWidget<T>{}
public class Grid : Widget{}
public class Grid<T> : Grid, IWidget<T>
public class Donut: Widget{}
public class Donut<T> : Donut, IWidget<T>
我所有的小部件都在列表小部件中,在foreach循环中,我处理每个小部件
这段代码运行良好。但我相信,有更好的方法可以做到这一点。我目前还没有找到解决方案,有没有办法改进我的代码 今天结束了,我想我应该充实一下我的评论。这就是我所说的模式匹配开关语句:
它非常简洁,但更易于阅读。看一看模式匹配开关语句:。这将使您的代码稍微好一点-不再有类型字符串。
switch (widget)
{
case Donut donut: @RenderGrid(donut);
break;
case Grid grid: @RenderGrid(grid);
break;
//etc.
}