2
我傳遞一個非靜態串入的MessageQueue:創造更多的可測試代碼,同時避免靜態/非靜態字段初始發行
public virtual MessageQueue MessageQueue { get; } = new MessageQueue(ConfigHelper.QLocation);
QLocation是非靜態的;但是,MessageQueue需要一個靜態參數。
我得到這個異常:
不能在靜態情況下
我ConfigHelper類訪問非靜態場是我的配置文件值的包裝。我可以使ConfigHelper類爲靜態;然而,這會使測試更加困難。
有沒有辦法處理這個問題,同時仍然保持代碼的可測試性?
謝謝!想知道爲什麼我不能像在問題中一樣在類的內部使用c#6.0語法來做到這一點? –
爲什麼配置幫助後必須使用括號 –
問題不在於C#6語法。問題是這樣的;你正試圖使用靜態方法的語法來調用非靜態方法(屬性是編寫getter方法的語法糖)。在下面的代碼片段'new ConfigHelper()。QLocation'中,我創建了一個'ConfigHelper'的新實例,然後我調用實例屬性'QLocation'。我使用帶'new'關鍵字的圓括號來調用C'tor類。 –