Я искал в Интернете и stackoverflow и нашел много сообщений, посвященных ошибке CS0311. Ни один из сценариев мне не близок. У меня есть универсальный класс, который наследуется от универсального класса.
Обратите внимание, что BusinessBase
— это класс в фреймворке CSLA
.
Что мне не хватает?
public interface Itest
{
int Digit();
}
class BB : Itest
{
public int Digit()
{
return 20;
}
}
class Test<T> : BusinessBase<T>, Itest where T : Test<T>, Itest
{
public int Digit()
{
return 30;
}
}
Test<Itest> test = new Test<Itest>(); //error CS0311
Ошибка CS0311 Тип
'MyTestApp.Itest'
нельзя использовать в качестве параметра типа'T'
в универсальном типе или методе'A<T>'
. Нет неявного преобразования ссылок из'MyTestApp.Itest'
в'MyTestApp.A<MyTestApp.Itest>'
. MyTestApp
Test<T>
в предложении where, попробуйтеwhere T : Itest
- person Hywel Rees   schedule 10.01.2017Test<T>
являетсяItest
, но каждыйItest
не являетсяTest<T>
, поэтому он терпит неудачу (точно так же, какBB
у вас есть.Itest
может бытьBB
) - person M.kazem Akhgary   schedule 10.01.2017