私のタイトルからは、私が達成しようとしていることを理解するのが少し難しいかもしれないので、もう少し詳しく説明します.
私は次のインターフェースを持っています:
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 はインターフェイスからの制約と一致する必要があると私に言い続けます。いくつかの異なるアプローチを試しましたが、どれもうまくいかないようです。
これを達成できるかどうか、またはその方法を知っている人はいますか? 継承されたモデルが許可されていることをインターフェイスで制約に伝えたいだけです。