在下面的代码中,我想根据另一个类的类型返回派生类,这是一种更优雅的方式。
if (option_ is Rectangle)
{
modelInputs = new Foo();
}
else if (option_ is Circle)
{
modelInputs = new Bar();
}
else if (option_ is Triangle)
{
modelInputs = new Bar2();
}
最佳答案
让 Rectangle、Circle 和 Triangle 实现 IHasModelInput:
interface IHasModelInput
{
IModelInput GetModelInput();
}
那么你可以做
IModelInput modelInputs = option_.GetModelInput();