는 다음 완벽하게 합법적 유형 계층 구조를 상상 :제네릭 형식 매개 변수로 자신을 지정하면서 제네릭 형식에서 파생 된 형식을 내보낼 수 있습니까?
내 질문이 <의 정적으로 컴파일 정의>는 동적으로 B 형을 방출 할 수 주어진class A<T> where T : A<T>
{
}
class B : A<B>
{
public B():base(){}
}
?
문제는 ModuleBuilder.DefineType
에 상위 유형을 지정하는 방법입니다.
아니면 많은 임시 파일을 생성하고 그것을에는 Csc.exe을 통과 같다 된 CodeDom (사용하여 상기 방법
- 이외의 같은 종류를 생산하는 또 다른 방법이있다 : -))
편집 : 는 유형 B
은로부터 상속 된 기본 생성자 호출 명시 적 공공 기본 생성자가 있어야합니다.
tb
이 TypeBuilder
입니다 typeof(A<>).MakeGenericType(tb)
같은 인수 뭔가를 사용하여 (재귀 유형에 부모를 설정 TypeBuilder.SetParent
방법을 사용하여 다음 부모 유형을 지정하지 않는 ModuleBuilder.DefineType
의 과부하를 사용할 수 있습니다
[이 질문] 한 번 봐 (http://stackoverflow.com/questions/1348268/how-do-i-create-a-class-that-inherits-from-another-and-passes를 타고 -a-type-parameter-in). 나는 너에게 똑같은 문제가 있다고 생각한다. –