12

CodeDom でクラス制約を生成する方法はありますか。

なぜなら、私が次のようなものを使用するとき

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

生成されたコードは次のようになります

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

私が見つけた最善の回避策は、クラスの前に先頭の空白を使用することです

genericParam.Constraints.Add(" class");

しかし、これはせいぜい回避策のようです。

4

2 に答える 2

7

その制約を指定する簡単な方法はないようです。「構造体」制約についても。

「T : new()」制約には、フラグを使用しますHasConstructorConstraint

残りについては、この msdn の例のように CodeTypeReference を使用します。

于 2009-06-10T14:50:49.353 に答える
1

"\x200Bclass"また、通常のスペースの代わりにゼロ幅スペース ( ) を使用します。次に、最終的な文字列でそれを空の文字列に置き換えます。.Replace("\x200B", string.Empty);

于 2012-06-02T20:35:26.877 に答える