Представьте себе следующую совершенно правовой иерархии типов:Можно ли испускать тип, получаемый из общего типа, при определении себя как параметра типового типа?
class A<T> where T : A<T>
{
}
class B : A<B>
{
public B():base(){}
}
Мой вопрос задается статически скомпилирован определение A <> возможно испускать типа B динамически?
Проблема заключается в том, как указать родительский тип в ModuleBuilder.DefineType
.
Или, может быть, есть еще один способ получения такого типа, кроме
- с использованием указанного выше метода
- с использованием CodeDom (что очень похоже на создание временного файла и передачи его Csc.exe: -))
EDIT: Тип B
должен иметь явный конструктор по умолчанию общественного вызывающему конструктора по умолчанию, унаследованном от A<B>
.
Посмотрите на [этот вопрос] (http://stackoverflow.com/questions/1348268/how-do-i-create-a-class-that-inherits-from-another-and-passes -a-типа параметра в). Я думаю, у вас такая же проблема. –