gpt4 book ai didi

C#根据类型将实现接口(interface)的类转换为类

转载 作者:行者123 更新时间:2023-11-30 13:36:51 27 4
gpt4 key购买 nike

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

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 仍然被识别为接口(interface),即使它被初始化为 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#根据类型将实现接口(interface)的类转换为类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29079709/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com