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

其余的使用 CodeTypeReference,就像在这个 msdn 示例中一样。

于 2009-06-10T14:50:49.353 回答
1

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

于 2012-06-02T20:35:26.877 回答