我有一個實現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類實際上是否以其名稱中的模型構建器結束?等 –