【发布时间】:2011-06-25 00:29:31
【问题描述】:
我有很多实现 IBuilder 接口的类,如下所示
更新: 每个 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 通用接口(IViewModelBuilder)并让通用接口继承它。然后我可以让演员像
ObjectFactory.GetInstance(t) as IViewModelBuilder
这是唯一的方法吗?
谢谢
【问题讨论】:
-
你有一个非常混乱的真实代码和示例代码的组合。 IViewModelBuilder 与 IBuilder 有什么关系,A 类实际上会以 ModelBuilder 的名称结尾吗?等等。
标签: c# .net structuremap