【发布时间】:2018-08-27 12:06:55
【问题描述】:
考虑这段代码:
switch(formatindex)
{
case 0:
var myExporter = new PngExporter { Background = OxyColors.Black };
fileExtension = ".jpg";
case 1:
var myExporter = new SvgExporter();
fileExtension = ".svg";
}
当然这不会编译,因为我声明了两次myExporter。
问题是,是否有一种巧妙的方法可以根据 switch-case 结果选择类型/构造函数。
在我的情况下(这导致了这个问题),使用myExporter 的其余代码无论选择哪种类型都是相同的,因为只有使用的属性是宽度和高度,并且它们的行为方式都相同两种类型的出口商。
我不想重复编写后续代码,这就是为什么我认为我可以做一些类似于所示代码的事情。
【问题讨论】:
-
在
switch之前声明变量:var myExporter;,然后在cases内myExporter =。 -
您希望它是哪种类型?
-
var Exporter如果不给它我猜的类型,也不会编译。 -
哦,那你可能需要使用一个共同的祖先类型而不是
var。 -
如果使用 myExporter 的代码相同,那么我猜你的 PngExporter 和你的 SvgExporter 都实现了相同的接口。因此,只需在切换之前定义“IInterface myExporter”...
标签: c# switch-statement