动态设置新实例类型
本文关键字:实例 类型 设置 新实例 动态 | 更新日期: 2023-09-27 17:50:02
我有一个问题,我以完全相同的方式创建一个新的孩子,不同的孩子类型。我不能重用我调用它的方法,因为我不知道如何动态设置新实例的类型。
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();
我的问题是,即使当我尝试使用接口时,我仍然需要在该条件内以某种方式创建实例(这是我所期望的)。
您要做的是像下面的代码一样,其中ISomeType
是SomeType
和SomeOtherType
实现的接口。
原始代码的问题是您在每个if
语句中声明了子变量,因此该块之外的任何代码都不可用。
ISomeType child;
if (radioSomeType.Checked)
{
child = new SomeType();
}
else if(radioSomeOTherType.Checked)
{
child = new SomeOTherType();
}
child.MdiParent = parent;
child.Open();