У меня есть проект Visual Studio 2008 C # 2.0 CF, в котором я реализую универсальный интерфейс, IComparison
.Метод IComparison.Compare
может быть вызван для любого типа сравнения, допустимого для указанных объектов, поэтому я не хочу накладывать на него ограничение типа.
public interface IComparison<EXPECTED_PARAM>
{
Result Compare<RETURNED_PARAM>(RETURNED_PARAM returned);
}
Реализация,однако, может быть более конкретным.В этом случае я бы хотел сказать, что параметр, заданный для GreaterThan.Compare
, можно сравнить с EXPECTED_PARAM
, заданным в конструкторе, через System.IComparable
.
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