工厂基于Typeof或是

leo*_*ora 3 c# factory

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

            if (option_ is Rectangle)
            {
                modelInputs = new Foo();
            }
            else if (option_ is Circle)
            {
                modelInputs = new Bar();
            }
            else if (option_ is Triangle)
            {
                modelInputs = new Bar2();
            }
Run Code Online (Sandbox Code Playgroud)

mmi*_*ika 8

有Rectangle,Circle和Triangle实现IHasModelInput:

interface IHasModelInput
{
    IModelInput GetModelInput();
}
Run Code Online (Sandbox Code Playgroud)

那么你可以做到

IModelInput modelInputs = option_.GetModelInput();
Run Code Online (Sandbox Code Playgroud)