CodeDom泛型类型约束

时间:2009-01-04 14:29:31

标签: c# generics codedom

有没有办法用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 个答案:

答案 0 :(得分:6)

似乎没有直接的方法来指定该约束。 for the "struct" constraint

对于“T:new()”约束,请使用标记HasConstructorConstraint

其余使用this msdn example中的CodeTypeReference。

答案 1 :(得分:1)

我也使用零宽度空间("\x200Bclass")而不是普通空间。然后我在最后一个字符串中用空字符串.Replace("\x200B", string.Empty);

替换它