3

这是我希望生成的类声明的样子:

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
 {
}

我究竟做错了什么?

4

2 回答 2

2

我认为 BaseType 的以下字符串应该可以解决问题(未经测试):

"DataObjectBase`1[[Refund]]"

您可能需要为 提供一个完全限定的名称Refund,至少包括程序集名称:

"DataObjectBase`1[[Refund, RefundAssembly]]"

然后您应该删除该行targetClass.TypeParameters.Add(...)

于 2009-08-28T17:13:51.563 回答
1

如果您使用表达式到 CodeDOM它可能是

var cls = Define.Class("Refund", 
   TypeAttributes.Public | TypeAttributes.Sealed, true)
   .Inherits(CodeDom.TypeRef("DataObjectBase","Refund"))
于 2009-09-22T10:00:29.027 回答