Frage

Gibt es eine Möglichkeit, eine Klasse Constraint mit CodeDom zu erzeugen.

Weil, wenn ich so etwas wie

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

der generierte Code ist wie

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

Die beste Abhilfe i gefunden ist eine führende Leerzeichen vor der Klasse zu verwenden,

genericParam.Constraints.Add(" class");

Dies scheint aber bestenfalls eine Abhilfe zu sein.

War es hilfreich?

Lösung

Es scheint, dass es keine straigntforward Art und Weise ist, dass die Einschränkung angeben. Weder für die "Struktur" Constraint .

Für die "T: new ()" Einschränkung verwenden, um die Flagge HasConstructorConstraint

Für die übrigen Codetypereference wie in diesem Msdn Beispiel verwenden .

Andere Tipps

Ich benutze auch Null-Breite Raum ("\x200Bclass") anstelle von normalen Raum. Dann habe ich es in final String mit leeren String ersetzen: .Replace("\x200B", string.Empty);

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top