C# 无法访问抽象类中受保护的构造函数

C# 无法访问抽象类中受保护的构造函数,c#,constructor,abstract,C#,Constructor,Abstract,我正在为一个抽象类创建一个单元测试代码。下面是该类的一个片段: public abstract class Component { private eVtCompId mComponentId; private eLayer mLayerId; private IF_SystemMessageHandler mLogger; protected Component(eVtCompId inComponentId, eLa

我正在为一个抽象类创建一个单元测试代码。下面是该类的一个片段:

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
,为什么单元测试似乎不能“看到”构造函数。有人能解释为什么会这样吗?提前感谢。

您不能创建类的实例。构造函数仅对派生类可见。请阅读以澄清访问修饰符之间的差异及其在不同(包括类)范围内的影响

从MSDN:

在类声明中使用抽象修饰符指示 类仅用于作为其他类的基类


此外,
组件
组件存取器
是完全不同的类型。

组件
组件存取器
是完全不同的类型。它们是如何相互联系的?