質問

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

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

役に立ちましたか?

解決

その制約を指定するための直接的な方法はないようです。 &quot; struct&quot;制約

&quot; T:new()&quot;の場合制約はフラグ HasConstructorConstraint

を使用します

残りの場合は、このmsdnの例のようにCodeTypeReferenceを使用します

他のヒント

通常のスペースの代わりに、幅がゼロのスペース(&quot; \ x200Bclass&quot; )も使用します。次に、最終文字列の空の文字列に置き換えます: .Replace(&quot; \ x200B&quot ;, string.Empty);

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top