CodeDom genérico tipo de restrição
Pergunta
Existe uma maneira para gerar uma restrição de classe com CodeDom.
Porque quando eu usar algo como
var method = new CodeMemberMethod();
var genericParam = new CodeTypeParameter("InterfaceType");
genericParam.Constraints.Add("class");
method.TypeParameters.Add(genericParam);
o código gerado é como
private InterfaceType GetImpl<InterfaceType>()
where InterfaceType : @class
{
}
A melhor solução que eu encontrei é usar um espaço em branco que conduz antes a classe
genericParam.Constraints.Add(" class");
Mas este parece ser na melhor das hipóteses uma solução alternativa.
Solução
Parece que não há nenhuma maneira straigntforward para especificar essa restrição. Nem para o "struct" restrição .
Para o "T: new ()" uso restrição a bandeira HasConstructorConstraint
Para a utilização resto CodeTypeReference como em este exemplo MSDN .
Outras dicas
Eu também usar o espaço de largura zero ("\x200Bclass"
) em vez de espaço normal. Então eu substituí-lo na cadeia final com string vazia: .Replace("\x200B", string.Empty);