0

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

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. 谁能解释为什么会这样?提前致谢。

4

1 回答 1

2

您不能创建abstract类的实例。protected构造函数仅对派生类可见。阅读可访问性级别(C# 参考)以清除访问修饰符之间的差异及其在各种(包括类)范围内的影响。

来自 MSDN:

在类声明中使用 abstract 修饰符来指示一个类仅作为其他类的基类。

此外,ComponentComponent_Accessor绝对是不同的类型。

于 2012-12-03T06:37:10.100 回答