我有一个使用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
我需要做什么才能具备任意比较EXPECTED_PARAM
对象和 RETURNED_PARAM
对象的能力?
谢谢, PaulH
Compare
之前,我不需要知道RETURNED_PARAM
类型。为此,我必须在构建时知道两种类型。谢谢! - PaulH