我有一个实现IBuilder <>接口,下面如何将对象转换为泛型?
那些已更新许多类: 每个模型1,模型2 ...从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<>));
});
修订
现在,每当我需要一些模块我称之为的模型时做功能
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<>
。 许多帖子建议创建不是通用接口(IViewModelBuilder)并让通用接口继承它。然后我就可以制作像
ObjectFactory.GetInstance(t) as IViewModelBuilder
这是唯一的方法吗?
谢谢
你的实际代码非常混乱混合的示例代码。 IViewModelBuilder如何与IBuilder相关联,A类实际上是否以其名称中的模型构建器结束?等 –