从我的标题可能有点难以理解我想要实现的目标,所以我会更详细地介绍一下。
我有以下界面:
public interface IModelBuilder<T>
where T : IStandardTemplateTemplate
{
M Build<M>(T pTemplate, params object[] pParams) where M : BaseModel;
}
现在我想在我的实际构建器中实现接口。我用来映射不同对象类型的构建器。所以这看起来如下:
public class BusinessModelBuilder : IModelBuilder<IBusinessTemplate>
{
public virtual M Build<M>(IBusinessTemplate pTemplate, params object[] pParams) where M : BussinessModel
{
var businessModel = Activator.CreateInstance<M>();
// map data
return businessModel;
}
}
现在问题如下。我无法让约束起作用。由于我在接口上定义了约束,因此即使我的 BusinessModel 继承自 BaseModel,它也不会让我对实际方法使用不同的约束。它一直告诉我我的约束 M 必须匹配来自界面的约束。我尝试了几种不同的方法,但似乎都没有奏效。
有谁知道这是否或如何实现?我只想在接口中告诉我的约束允许继承模型。