【发布时间】:2013-07-28 20:15:38
【问题描述】:
我有以下接口
public interface IRevision<TRevisionType>
{ ... }
public interface IRevisionLog
{ ... }
public interface IRevisionControl<in TRevision, TLogType,T>
where TRevision : IRevision<T>
where TLogType : IRevisionLog
{ ... }
这段代码编译得很好,但我想知道,最后一个 T 真的需要吗? 当我实现 IRevision 时,我将传递类型 T,所以真的不需要重复类型。
我的演示实现是:
public class HgRevision : IRevision<string>
{ ...}
public class HgLog : IRevisionLog
{ ... }
public class Hg : IRevisionControl<HgRevision, HgLog, string>
我传递了两次字符串。我想知道我是否可以这样做:
public interface IRevisionControl<in TRevision, TLogType>
where TRevision : IRevision
where TLogType : IRevisionLog
{ ... }
所以我的汞是:
public class Hg : IRevisionControl<HgRevision, HgLog>
当然,最后这个 sn-p 不会编译。
【问题讨论】:
标签: c# .net generics interface