我将非静态字符串传递给MessageQueue:
public virtual MessageQueue MessageQueue { get; } = new MessageQueue(ConfigHelper.QLocation);
QLocation 是非静态的;但是, MessageQueue 需要一个静态参数。
我得到了这个例外:
无法访问静态上下文中的非静态字段
我的 ConfigHelper 类是我的配置文件值的包装器。我可以使ConfigHelper类静态;然而,这会使测试变得更加困难。
有没有办法解决这个问题,同时仍然保持代码可测试性?
答案 0 :(得分:5)
您尝试以静态方式使用QLocation
(ConfigHelper.QLocation
),而它是非静态字段(正如您所写的那样......)
试试这个:
.... = new MessageQueue(new ConfigHelper().QLocation);
它会删除错误。
IMO,你应该通过这个CUT(被测试的课程)C注射MessageQueue
。您的班级与MessageQueue
有依赖关系。
如果您不想注入MessageQueue
我提供注入连接字符串而不是配置。