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);