gpt4 book ai didi

c# - 继承时缺少方法异常

转载 作者:行者123 更新时间:2023-11-30 14:34:17 25 4
gpt4 key购买 nike

我有以下继承自 DataTable 的类:

public class ExcelStaticDataTable : DataTable
{
public List<ExcelStaticDataTable> SubTables { get; set; }
public ExcelStaticDataTable(string tableName): base(tableName)
{
SubTables = new List<ExcelStaticDataTable>();
}
}

你知道为什么我在执行以下操作时会收到 MissingMethodException“为此对象定义的无参数构造函数”吗:

ExcelStaticDataTable table=new ExcelStaticDataTable("table1");
table.Clone();

这两段代码在不同的 dll 中只是为了澄清。这里是堆栈跟踪:

at System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
at System.RuntimeType.CreateInstanceSlow(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
at System.RuntimeType.CreateInstanceDefaultCtor(Boolean publicOnly, Boolean skipCheckThis, Boolean fillCache, StackCrawlMark& stackMark)
at System.Activator.CreateInstance(Type type, Boolean nonPublic)
at System.Data.DataTable.CreateInstance()
at System.Data.DataTable.Clone(DataSet cloneDS)
at System.Data.DataTable.Clone()
at System.Data.DataTable.Copy()
at ..........cs:line 35

谢谢。

最佳答案

我怀疑其他代码正在使用 object newObj = Activator.CreateInstance(GetType()); 作为 Clone() 的一部分。这在默认用法中需要一个公共(public)无参数构造函数。否则它会抛出一个 MissingMethodException

更新:显示堆栈跟踪的更新证实了这一点。

我怀疑您可以通过覆盖 CreateInstance 方法来解决此问题:

protected override DataTable CreateInstance()
{
return new ExcelStaticDataTable(TableName);
}

关于c# - 继承时缺少方法异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14339926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com