在下面的代码中,我想根据另一个类的类型返回派生类,这是一种更优雅的方式。

            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();

10-07 17:11