我有一个Visual Studio 2008 C#2.0 CF项目,我正在实现一个通用接口IComparison.可以调用IComparison.Compare方法来执行对指定对象有效的任何类型的比较,因此我不想对其设置类型约束.
public interface IComparison<EXPECTED_ParaM> { Result Compare<RETURNED_ParaM>(RETURNED_ParaM returned); }
但是,实施可以更具体.在这种情况下,我想说可以将给予GreaterThan.Compare的参数与构造函数中通过System.IComparable给出的EXPECTED_ParaM进行比较.
public class GreaterThan<EXPECTED_ParaM> : IComparison<EXPECTED_ParaM> { private EXPECTED_ParaM expected_; public GreaterThan(EXPECTED_ParaM expected) { expected_ = expected; } public Result Compare<RETURNED_ParaM>(RETURNED_ParaM returned) where RETURNED_ParaM : IComparable< EXPECTED_ParaM > { return ((returned == null && expected_ == null) || (returned != null && returned.Compareto( expected_ ) > 0)) ? Result.Fail : Result.Pass; } }
不幸的是,这给了我错误:
error CS0460: Constraints for override and explicit interface implementation methods are inherited from the base method,so they cannot be specified directly
为了能够使用RETURNED_ParaM对象执行EXPECTED_ParaM对象的任意比较,我需要做什么?
谢谢,
PaulH
解决方法
这个怎么样?
public interface IComparison<EXPECTED_ParaM,RETURNED_ParaM> { Result Compare(RETURNED_ParaM returned); } public class GreaterThan<EXPECTED_ParaM,RETURNED_ParaM> : IComparison<EXPECTED_ParaM,RETURNED_ParaM> where RETURNED_ParaM : IComparable<EXPECTED_ParaM> { private EXPECTED_ParaM expected_; public GreaterThan(EXPECTED_ParaM expected) { expected_ = expected; } public Result Compare(RETURNED_ParaM returned) { return ((returned == null && expected_ == null) || (returned != null && returned.Compareto( expected_ ) > 0)) ? Result.Fail : Result.Pass; } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。