'DocX' 不包含采用 0 个参数的构造函数
'DocX' does not contain a constructor that takes 0 arguments
我想继承DocX
,集成Word文档的InterOp打印:
public class WordDoc : DocX {
static private Microsoft.Office.Interop.Word.Application wordApp;
static WordDoc() {
}
}
但是当我尝试这样做时,出现了这个错误:
'DocX' does not contain a constructor that takes 0 arguments
从元数据中我可以看到根本没有定义构造函数,所以我认为应该生成空的构造函数。我也没有为我的基础 class.
提供构造函数
我确实有静态构造函数,但是当我删除它时,我仍然得到同样的错误。
Class 您尝试继承的有一个 internal 构造函数:
internal DocX(DocX document, XElement xml)
: base(document, xml)
{
}
所以你不能继承这个class。如果省略默认构造函数,编译器将生成:
public WordDoc() : base() {
}
但是 base()
构造函数不可访问(内部)。如果创建默认构造函数:
public WordDoc() {
}
编译器仍将添加对 base()
的调用,因为您不能从 class 继承并以某种方式忽略调用任何此基础 class 构造函数。
所以不要继承 - 使用其他方式,例如扩展方法、代理 class 等等,具体取决于您要解决的具体问题。
如果你查看 source code,你会看到确实声明了一个构造函数:
internal DocX(DocX document, XElement xml)
: base(document, xml)
{
}
也就是说,考虑到它被标记为 internal
,这 class 似乎是 NOT public API 因此,您不应尝试直接实例化它或继承它。
相反,所有 examples 似乎都依赖于 class:
中的静态 Create
方法
public static DocX Create(string filename,
DocumentTypes documentType = DocumentTypes.Document)
{
// Store this document in memory
MemoryStream ms = new MemoryStream();
// Create the docx package
//WordprocessingDocument wdDoc = WordprocessingDocument.Create(ms,
DocumentFormat.OpenXml.WordprocessingDocumentType.Document);
Package package = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite);
PostCreation(package, documentType);
DocX document = DocX.Load(ms);
document.filename = filename;
return document;
}
我想继承DocX
,集成Word文档的InterOp打印:
public class WordDoc : DocX {
static private Microsoft.Office.Interop.Word.Application wordApp;
static WordDoc() {
}
}
但是当我尝试这样做时,出现了这个错误:
'DocX' does not contain a constructor that takes 0 arguments
从元数据中我可以看到根本没有定义构造函数,所以我认为应该生成空的构造函数。我也没有为我的基础 class.
提供构造函数我确实有静态构造函数,但是当我删除它时,我仍然得到同样的错误。
Class 您尝试继承的有一个 internal 构造函数:
internal DocX(DocX document, XElement xml)
: base(document, xml)
{
}
所以你不能继承这个class。如果省略默认构造函数,编译器将生成:
public WordDoc() : base() {
}
但是 base()
构造函数不可访问(内部)。如果创建默认构造函数:
public WordDoc() {
}
编译器仍将添加对 base()
的调用,因为您不能从 class 继承并以某种方式忽略调用任何此基础 class 构造函数。
所以不要继承 - 使用其他方式,例如扩展方法、代理 class 等等,具体取决于您要解决的具体问题。
如果你查看 source code,你会看到确实声明了一个构造函数:
internal DocX(DocX document, XElement xml)
: base(document, xml)
{
}
也就是说,考虑到它被标记为 internal
,这 class 似乎是 NOT public API 因此,您不应尝试直接实例化它或继承它。
相反,所有 examples 似乎都依赖于 class:
中的静态Create
方法
public static DocX Create(string filename,
DocumentTypes documentType = DocumentTypes.Document)
{
// Store this document in memory
MemoryStream ms = new MemoryStream();
// Create the docx package
//WordprocessingDocument wdDoc = WordprocessingDocument.Create(ms,
DocumentFormat.OpenXml.WordprocessingDocumentType.Document);
Package package = Package.Open(ms, FileMode.Create, FileAccess.ReadWrite);
PostCreation(package, documentType);
DocX document = DocX.Load(ms);
document.filename = filename;
return document;
}