簡體   English   中英

繼承時缺少方法異常

[英]Missing Method Exception on inheritance

我有以下繼承自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()一部分。 這需要默認用法中的公共無參數構造函數。 否則會拋出MissingMethodException

更新:顯示堆棧跟蹤的更新確認了這一點。

我懷疑你可以通過覆蓋CreateInstance方法來解決這個問題:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM