2015-08-13 1 views
-1

Я получил (а) эту ошибку:«Нет никакого неявного преобразования ссылок из« объекта »в« System.IEquatable <object> ».»

Нет никакого неявного ссылочного преобразования от object до System.IEquatable<object>.

Когда я пытался создать универсальный класс

MyClass<T, V> where T : IEquatable<T> 

с параметром «типа», как «объект, объект»:

MyClass<object, object> mc = new MyClass<object, object>(t, t) 

и конструктор параметра (t, t) является объектом какого-либо другого класса (Test t=new Test()).

Класс 'Тест', имеющий общий метод с ограничением IEquatable<T>:

public bool Equals<T, V>(T tp,V vp) where T : IEquatable<Test> 

А Общий класс имеет

IEquatable<T> 

ограничение.

+1

Не могли бы вы исправить свое форматирование? Как бы то ни было, ваш вопрос едва читабельен. –

+2

Как заявляет ошибка, 'object' не реализует' IEquatable 'поэтому не может использоваться как параметр типа для' T'. – Lee

+1

Я исправил ваше форматирование, но это все еще довольно плохо. Не рассказывайте о своем коде, покажите его. Покажите полный пример. – CodeCaster

ответ

0

Вы указали в своем родовом классе подписи, T должен реализовать IEquatable<T>, а затем пытались использовать object в качестве аргумента типа для T.

Что вы действительно хотите? Вы хотите обеспечить, чтобы этот T реализовал этот интерфейс? Или вы хотите использовать практически любой класс для T?

Используйте аргумент типа T для первого случая, кроме object, или удалите ограничение для второго.

Смежные вопросы