这就是我想要的结果类声明:
public sealed partial class Refund : DataObjectBase<Refund>
{
}
}
此代码(剪辑):
targetClass = new CodeTypeDeclaration(className);
targetClass.IsClass = true;
targetClass.TypeAttributes =
TypeAttributes.Public | TypeAttributes.Sealed;
targetClass.IsPartial = true; //partial so that genn'ed code can be safely modified
targetClass.TypeParameters.Add(new CodeTypeParameter{ Name=className});
targetClass.BaseTypes.Add(new CodeTypeReference { BaseType = "DataObjectBase", Options = CodeTypeReferenceOptions.GenericTypeParameter });
生成此类声明:
public sealed partial class Refund<Refund> : DataObjectBase
{
}
我做错了什么?
答案 0 :(得分:2)
我认为BaseType的以下字符串应该处理(未经测试):
"DataObjectBase`1[[Refund]]"
您可能需要为Refund
提供一个完全限定的名称,至少包括程序集名称:
"DataObjectBase`1[[Refund, RefundAssembly]]"
然后您应该删除行targetClass.TypeParameters.Add(...)
。
答案 1 :(得分:1)
如果您使用Expressions to CodeDOM,则可能是
var cls = Define.Class("Refund",
TypeAttributes.Public | TypeAttributes.Sealed, true)
.Inherits(CodeDom.TypeRef("DataObjectBase","Refund"))