CodeDom泛型类型约束

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

但这似乎最多只是一种解决方法。

2个回答

7

看起来似乎没有直接指定该约束的方法。对于"结构体"约束也是如此。

对于"T : new()"约束,请使用标志HasConstructorConstraint

对于其他情况,请使用CodeTypeReference,例如这个MSDN示例


1

我也使用零宽度空格 ("\x200Bclass") 代替普通空格。然后在最终字符串中用空字符串替换它:.Replace("\x200B", string.Empty);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接