动态设置新实例类型

本文关键字:实例 类型 设置 新实例 动态 | 更新日期: 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();

我的问题是,即使当我尝试使用接口时,我仍然需要在该条件内以某种方式创建实例(这是我所期望的)。

动态设置新实例类型

您要做的是像下面的代码一样,其中ISomeTypeSomeTypeSomeOtherType实现的接口。

原始代码的问题是您在每个if语句中声明了子变量,因此该块之外的任何代码都不可用。

ISomeType child;
if (radioSomeType.Checked)
{
    child = new SomeType();
}
else if(radioSomeOTherType.Checked)
{
    child = new SomeOTherType();
}
child.MdiParent = parent;
child.Open();