使用约束实现通用接口有什么好处?

时间:2017-03-09 20:45:18

标签: c# generics

我有一个通用接口,用于定义将类型T映射到类型U的方法。界面定义如下:

    public interface IDataMapper<T, U>
    {
         U Map(T toMap);
    }

使用TU的约束实现此接口的优势是什么,而不是直接指定类型。例如,使用:

    public class AuditFileMapper<T, U> : IDataMapper<T, U> where T : Audit where U : File
    {
        public virtual U Map(T toMap)
        {
            //Implementation details here.
        }
    }

而不是:

public class AuditFileMapper : IDataMapper<Audit, File>

我能想到的一个好处是,如果你继承自AuditFileMapper,你可以改变孩子的类型AuditFile,而不必将类型转换为相应的子类。还有更多优势吗?例如:

public class ExtendedAuditFile : AuditFileMapper<ExtendedAudit, XMLFile>
{
     public override XMLFile Map(ExtendedAudit toMap)
     {
          base.Map(toMap);
          //Implementation details here.
     }
}

其中ExtendedAuditAudit的孩子,而XMLFile的孩子是File的孩子。

0 个答案:

没有答案