C#基于类型将类实现接口转换为Class

我的问题最好用一个例子来解释:

public IPlotModel MyPlotModel;
public ??? CastedModel;

public Constructor()
{
    MyPlotModel = new PlotModel(); //This should be interchangable with other types
                                   //E.g.: MyPlotModel = new OtherModel();
    CastedModel = (MyPlotModel.GetType()) MyPlotModel;
}

这基本上就是我想要的.
CastedModel应该转换为MyPlotModel的类型.

我使用Convert.ChangeType()取得了一些成功.我设法将CastedModel的类型更改为正确的类型,但我无法将CastedModel的值更改为MyPlotModel.

这是我试过的:

Convert.ChangeType(CastedModel, MyPlotModel.GetType());
CastedModel = MyPlotModel;

但MyPlotModel仍然被识别为接口,即使它被初始化为PlotModel.

提前致谢,
亚历山大.

最佳答案
这似乎应该使用泛型类:

public class Example<TPlotModel> where TPlotModel : IPlotModel, new()
{
    public TPlotModel PlotModel { get; private set; }

    public Example()
    {
        this.PlotModel = new TPlotModel();
    }
}

然后你可以实例化和使用

var myExample = new Example<MyPlotModel>();
MyPlotModel foo = myExample.PlotModel;

转载注明原文:C#基于类型将类实现接口转换为Class - 代码日志