variable type new method generic c# generics codedom

c# - type - CodeDom restricción de tipo genérico



gettype of generic c# (2)

¿Hay alguna manera de generar una restricción de clase con CodeDom?

Porque cuando uso algo como

var method = new CodeMemberMethod(); var genericParam = new CodeTypeParameter("InterfaceType"); genericParam.Constraints.Add("class"); method.TypeParameters.Add(genericParam);

el código generado es como

private InterfaceType GetImpl<InterfaceType>() where InterfaceType : @class { }

La mejor solución que encontré es utilizar un espacio en blanco líder antes de la clase

genericParam.Constraints.Add(" class");

Pero esto parece ser, en el mejor de los casos, una solución.


Parece que no hay una forma directa de especificar esa restricción. Ni para la restricción "struct" .

Para la restricción "T: new ()" use la bandera HasConstructorConstraint

Para el resto use CodeTypeReference como en este ejemplo msdn .


También uso espacio de ancho cero ( "/x200Bclass" ) en lugar de espacio normal. Luego lo reemplazo en una cadena final con una cadena vacía: .Replace("/x200B", string.Empty);