我遇到一个问题,我正在以完全相同的方式为不同的子类型创建一个新的子对象。我无法重用我调用的方法,因为我不知道如何动态设置新实例的类型。
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();
}
我在本文中设置了一些其他属性并调用了一些其他方法,但我在本示例中删除了它们。
我知道如何使用接口(interface),但我不确定如何最初为实例设置类型。
我想减少重复,并做这样的事情:
if (radioSomeType.Checked)
{
SomeType child = new SomeType();
}
else if(radioSomeOTherType.Checked)
{
SomeOtherType child = new SomeOTherType();
}
child.MdiParent = parent;
child.Open();
我的问题是,即使当我尝试使用接口(interface)时,我仍然需要在该条件内以某种方式创建实例(这是我所期望的)。
最佳答案
您想要做的事情类似于下面的代码,其中 ISomeType
是 SomeType
和 SomeOtherType
都实现的接口(interface)。
原始代码的问题是您在每个 if
语句内声明了子变量,因此该 block 之外的任何代码都无法使用它。
ISomeType child;
if (radioSomeType.Checked)
{
child = new SomeType();
}
else if(radioSomeOTherType.Checked)
{
child = new SomeOTherType();
}
child.MdiParent = parent;
child.Open();
关于c# - 动态设置新实例类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22354478/