我有一个问题,我正在以完全相同的方式为不同的孩子类型创建一个新孩子。我无法重用我调用它的方法,因为我不知道如何动态设置新实例的类型。
if (radioSomeType.Checked)
{
SomeType child = new SomeType();
child.MdiParent = parent;
child.Open();
}
else if(radioSomeOTherType.Checked)
{
SomeOtherType child = new SomeOTherType();
child.MdiParent = parent;
child.Open();
}
我设置了一些其他属性并在此片段中调用了其他一些方法,但我在此示例中删除了它们。
我知道如何使用接口,但我不知道如何为该实例初始设置类型。
我想减少重复,并执行以下操作:
if (radioSomeType.Checked)
{
SomeType child = new SomeType();
}
else if(radioSomeOTherType.Checked)
{
SomeOtherType child = new SomeOTherType();
}
child.MdiParent = parent;
child.Open();
我的问题是,即使我尝试使用接口,我仍然需要在该条件内以某种方式创建实例(这是我期望的)。
答案 0 :(得分:4)
您要做的是类似下面的代码,其中ISomeType
是SomeType
和SomeOtherType
都实现的接口。
原始代码的问题在于您在每个if
语句中声明了子变量,因此它不能用于该块之外的任何代码。
ISomeType child;
if (radioSomeType.Checked)
{
child = new SomeType();
}
else if(radioSomeOTherType.Checked)
{
child = new SomeOTherType();
}
child.MdiParent = parent;
child.Open();