我有以下接口
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>
当然,最后一个片段无法编译。