웹 및 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
다음과 같이 갈 수 있습니다.
interface Itest {}
class BusinessBase<T> {
}
class Test<T> : BusinessBase<T>, Itest where T : Test<T>, Itest {
public int Digit() {
return 30;
}
}
class IT : Test<IT>, Itest {
}
class Program {
public static int Main() {
var t = new Test<IT>();
t.Digit();
return 0;
}
}
나에게 제네릭을 정말 끔찍하게 사용하는 것은 CSLA가 작동하는 방식입니다 ....
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다