【发布时间】:2012-08-02 16:13:11
【问题描述】:
我知道这意味着什么,但想要优雅地解决这个问题。对于解决方案,我可以创建具有不同签名的方法,但这不会让我满意。 我的场景如下:
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) { ... }
}
任何优雅的解决方案都会很棒
【问题讨论】:
-
@MarcGravell 是的,这是模棱两可的,如果 C# 允许,我可以将返回值转换为 ViewModelOne 和 ViewModelTwo 并且它可以执行适当的方法。我可以在 ISiteMapper 等中编写 MapToViewModelTwo 方法,但我想让我挑脑筋看看有没有办法解决这个问题
标签: c# .net asp.net-mvc-3