【发布时间】:2020-12-07 13:00:42
【问题描述】:
是否可以使用输入变量作为方法的类名?
我现在使用的:
Switch/Case 带有多个Namespace.Class.Method()。
每个编解码器方法都在自己的类中。
public static void SetControls(string codec_SelectedItem)
{
switch (codec_SelectedItem)
{
case "Vorbis":
Codec.Vorbis.Set();
break;
case "Opus":
Codec.Opus.Set();
break;
case "AAC":
Codec.AAC.Set();
break;
case "FLAC":
Codec.FLAC.Set();
break;
case "PCM":
Codec.PCM.Set();
break;
}
}
尝试简化:
单个Method 和动态Class。
使用SelectedItem 作为方法的类名。
public static void SetControls(string codec_SelectedItem)
{
Codec.[codec_SelectedItem].Set();
}
【问题讨论】:
-
我怀疑这段代码是否可以编译
-
编解码器名称字典和实现 .set() 的接口?
-
@WalterVehoeven 正确,第二个示例无法编译。如果可能的话,我正在尝试找到正确的方法。
-
“你可以使用反射” @OlivierRogier 为什么?这是完全没有必要的。只需应用一些 OOP。
-
编解码器是否嵌套在“编解码器”中?那是什么结构,看起来它们是静态类?