我一直在使用他們提供的SDK導入到第三方客戶端軟件的Windows窗體控件項目。由我試圖加載的另一家公司編寫的自定義控件需要在顯示信息之前登錄到服務器,這可能需要20-30秒。爲了加快速度,我有想法將控制所需的信息預加載到文本文件。由於它不是已知的類型,因此在嘗試序列化類時會引發錯誤。試圖預加載對象到文本文件以加快加載速度的問題
我有一本詞典,我用它來引用回適當的ICamera類。如果我將「cam」從ICamera類型更改爲字符串,例如「cam.GetLiveURL()」。它寫入文本文件沒有問題。這是我用來填充字典的代碼。
foreach (ICamera cam in _adapter.Cameras())
{
OCCamera.Add(cam.GetDisplayName(), cam);
}
我試過XMLSerializer,它似乎有處理字典時遇到困難。
我已經試過的BinaryFormatter並且得到錯誤:
Type 'OCAdapter.OCCamera' in Assembly 'OCAdapter.dll' in not marked as serializable.
我已經試過的DataContractSerializer並且得到錯誤:
Type 'OCAdapter.OCCamera' with data contract name 'OCCamera: http://schemas.datacontract.org/2004/07/OCAdapter ' is not expected. Consider using a DataContractResolver or add ant types not known statically to the list of known types - for example, by using the KnownTypeAttribute attribute or by adding the to the list of known types passed to DataContractSerializer.
我曾嘗試與DataContractResolver玩弄似乎並不能得到它工作,我根本不理解它。
我用於BinaryFormatter和DataContractSerializer的代碼是直接從MSDN或其他地方進行測試的,沒有自定義類型。
也許有更好的方法來處理這一切,我錯過了它。我不反對爲別的東西放棄字典路線,或者我可以重寫任何數量的其他代碼來使其工作。
「登錄到服務器」是一個相當模糊的說法。這是一個REST HTTP服務嗎?你能給我們一個來自這個「服務器」的樣本回應嗎? – 2014-10-10 16:06:26
它是一個網絡視頻錄像機,NVR。它記錄來自安全攝像頭的流。對不起,我不知道如何回答這個問題。 – TonySchoborg 2014-10-10 16:21:49