私はそれが何を意味するのか知っていますが、この問題に対するエレガントな解決策を望んでいます。回避策として、さまざまなシグネチャを使用してメソッドを作成できますが、それでは満足できません。私のシナリオは次のとおりです。
public interface IDomainToViewMapper<TModel, TViewModel>
{
TViewModel MapDomainToView(TModel source);
}
public interface ISiteMapper : IDomainToViewMapper<Site, ViewModelOne>,
IDomainToViewMapper<Site, ViewModelTwo>
{ }
これで、メインの実装クラスを作成すると、同じ署名の問題を持つメンバーが取得されます。先に進んでインターフェイスを明示的に実装することはできますが、依存性をその場で注入しているため、インターフェイスにキャストできません。これもあいまいになります。
public SiteMapper : ISiteMapper
{
public ViewModelOne MapDomainToView(Site site) { ... }
public ViewModelTwo MapDomainToView(Site site) { ... }
}
この問題に対するエレガントな解決策は素晴らしいでしょう