我有一個C#Windows Phone 8應用程序,對於擁有它的手機,將Compass傳感器用於特定功能。我想修改該類,以便它可以在沒有指南針傳感器的手機上工作。如果(_compass!= null)語句,我不想將每個調用都打包到中的Compass對象。我以爲我可以創建一個虛擬的指南針類與存根指南針的方法和屬性,並創建它的實例,而不是指南針,如果手機沒有指南針,但我遇到了問題與抽象Compass類的基類名爲SensorBase。無論我做什麼,我得到的編譯時錯誤:無法創建虛擬C#傳感器類而沒有得到任何構造函數定義的錯誤?
Error 1 The type 'Microsoft.Devices.Sensors.SensorBase<TSensorReading>' has no constructors defined
指南針類我試圖仿效從SensorBase的可以繼承沒有得到這個錯誤。我從Sensors元數據文件中獲取了Compass類的確切聲明行,並在將類名更改爲CompassDummy後將其插入我的虛擬類中,但仍然出現錯誤。
我的猜測是Compass類可以從SensorBase繼承,而我的dummy類不能,因爲它與SensorBase在同一個Assembly中。也許SensorBase的構造函數標記爲內部或者還有其他類似的「朋友」類似的關係。
我的問題是,有什麼我可以做的,在這種情況下從SensorBase繼承沒有得到這個錯誤?如果沒有,是否還有另一種涉及依賴注入(IOC)的解決方案,當手機沒有指南針時,這有助於實現實例化虛擬類的目標?
這裏是我所得到錯誤的CompassDummy類代碼:
public sealed class CompassDummy : SensorBase<CompassReading>
{
public CompassDummy()
{
}
} // public class CompassDummy
做,如果你從你的CompassDummy類中刪除構造函數,你得到同樣的錯誤? –