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:
在类声明中使用抽象修饰符指示
类仅用于作为其他类的基类
此外,
组件
和组件存取器
是完全不同的类型。组件
和组件存取器
是完全不同的类型。它们是如何相互联系的?