我一直在使用他们提供的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