質問
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
他のヒント
通常のスペースの代わりに、幅がゼロのスペース(&quot; \ x200Bclass&quot;
)も使用します。次に、最終文字列の空の文字列に置き換えます: .Replace(&quot; \ x200B&quot ;, string.Empty);
所属していません StackOverflow