У меня есть два контракта (один общий интерфейс, а другой необщего) следующим образом:Реализация интерфейса Generic и Non общий интерфейс
public interface IGenericContract<T> where T : class
{
IQueryable<T> GetAll();
}
public interface INonGenericContract
{
string GetFullName(Guid guid);
}
У меня есть класс, реализующий оба
public class MyClass<T> :
IGenericContract<T> where T : class, INonGenericContract
{
public IQueryable<T> GetAll()
{
...
}
public string GetFullName(Guid guid)
{
...
}
}
Все хорошо, пока я не скомпилирую его. Но теперь, когда я пытаюсь использовать этот класс, я сталкиваюсь с этой ошибкой "error CS0311: Тип 'string' не может использоваться как параметр типа 'T' в родовом типе или методе 'ConsoleApplication1.MyClass'. Нет неявной ссылки преобразование из 'string' в 'ConsoleApplication1.INonGenericContract'. "
class Program
{
static void Main(string[] args)
{
MyClass<string> myClass = new MyClass<string>(); //Error
}
}
Если я не выполняю нестандартный договор, он отлично работает. Что здесь может быть не так?
Благодаря