【发布时间】:2013-05-18 00:11:27
【问题描述】:
我有一个由一组对象实现的接口。我希望集合中的所有对象都实现 MemberWiseCompare(ImplementingType rhs) 方法,该方法要求它们使用自己的类型作为参数类型。
经过一番研究,我似乎可以改变我的界面:
public interface IMyInterface
到
public interface IMyInterface<T>
然后使用T 作为MemeberWiseCompare 方法的参数类型。但是,我希望有一个替代解决方案,因为这会产生 200 个编译器错误,因此需要做很多工作。此外,我认为这可能会导致一些问题,因为在某些地方我使用 IMyInterface 作为返回或参数类型,并且我确信将所有这些更改为通用版本会使代码复杂化。有没有其他方法可以做到这一点?有没有更好的选择?
【问题讨论】:
-
泛型是要走的路。
-
C# 中有“奇怪的重复模板模式”except it's not particularly enforceable。但是同样给它一个评论。对于返回现在非泛型接口的现有方法,您可以将此版本保留为泛型版本的基础,并且不需要需要泛型的代码仍然可以工作。
-
什么样的编译器错误?将
public interface IMyInterface<T>:IMyInterface作为中间步骤会有帮助吗? -
这不是F-bounded polymorphism 有用的地方吗?如果是这样,不幸的是它在 C# 中不可用