gpt4 book ai didi

c# - 如何将对象转换为泛型?

转载 作者:太空狗 更新时间:2023-10-30 00:27:28 28 4
gpt4 key购买 nike

我有很多实现IBuilder<>接口(interface)的类,如下所示

更新:每个 Model1, Model2... 都继承自 IModel

public class A : IBuilder<Model1>
{
public Model1 Create(string param)
{
return new Model1();
}
}
public class B : IBuilder<Model2>
{
public Model2 Create(string param)
{
return new Model2();
}
}

我正在使用 StructureMap 注册所有继承 IBuilder<>

的类
Scan(x =>
{
x.TheCallingAssembly();
x.AddAllTypesOf(typeof(IViewModelBuilder<>));
});

已更新

现在,每次我需要获取某个模块的模型时,我都会调用 Do 函数

public IModel Do(Module module)
{
//ModelSettings is taken from web.config
var builderType = Type.GetType(string.Format("{0}.{1}ModelBuilder,{2}", ModelSettings.Namespace, module.CodeName, ModelSettings.Assembly));
var builder = ObjectFactory.GetInstance(t) as IViewModelBuilder<>;

return builder.Create("");
}

我在 ObjectFactory.GetInstance(t) as IViewModelBuilder<> 行遇到编译错误.许多帖子建议创建NOT 通用接口(interface)(IViewModelBuilder) 并让通用接口(interface)继承它。然后我可以像这样制作 Actor

ObjectFactory.GetInstance(t) as IViewModelBuilder

这是唯一的方法吗?

谢谢

最佳答案

DoGetInstance 的代码也应该是通用的。基本上它看起来像这样

public T Do<T> ()
{
return ObjectFactory.GetInstance<T>().Create();
}

关于c# - 如何将对象转换为泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6418444/

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