簡體   English   中英

無法訪問抽象類中的受保護構造函數

[英]cannot access protected constructor in abstract class

我正在為抽象類創建單元測試代碼。 這是該類的一個片段:

public abstract class Component
    {

        private eVtCompId mComponentId;
        private eLayer mLayerId;
        private IF_SystemMessageHandler mLogger;

        protected Component(eVtCompId inComponentId, eLayer inLayerId, IF_SystemMessageHandler inMessageHandler)
        {
            mLayerId = inLayerId;
            mComponentId = inComponentId;
            mLogger = inMessageHandler;
        }

我在構造函數的參數中有兩個枚舉,后跟一個接口。

這是我的單元測試代碼的片段:

Component_Accessor target = new Component_Accessor(eVtCompId.MasterSWCommDevice, eLayer.Foundation, new MySysMsgHandler());

我不斷收到錯誤消息“Component_Accessor不包含帶'3'參數的構造函數”。 我似乎無法理解為什么會這樣。 當我刪除abstract關鍵字時,單元測試工作正常。

我不明白為什么如果將類設置為abstract ,單元測試似乎無法“看到”構造函數。 任何人都可以解釋為什么會這樣嗎? 提前致謝。

您無法創建abstract類的實例。 protected構造函數僅對派生類可見。 讀取輔助功能級別(C#參考)以清除訪問修飾符之間的差異及其在各種(包括類)范圍內的影響。

來自MSDN:

在類聲明中使用abstract修飾符來指示一個類僅用於其他類的基類。

此外, ComponentComponent_Accessor絕對是不同的類型。

暫無
暫無

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

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