[英]Error with xml serialization in c# - paramaterless constructor
我正在嘗試使用下面的代碼將指紋FMD序列化為XML,但是收到錯誤:
錯誤:DPUruNet.DataResult`1 [DPUruNet.Fmd]無法序列化,因為它沒有無參數構造函數。
public void storePrint(DataResult<Fmd> resultConversion)
{
//store fingerprint as byte and insert to server------------
using (StreamWriter myWriter = new StreamWriter("test.txt", false))
{
System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(resultConversion.GetType());
x.Serialize(myWriter, resultConversion);
}
MessageBox.Show("Fingerprint Stored!");
//------------------------------------------------------------
}
private void OnCaptured(CaptureResult captureResult)
{
try
{
// Check capture quality and throw an error if bad.
if (!_sender.CheckCaptureResult(captureResult)) return;
count++;
DataResult<Fmd> resultConversion = FeatureExtraction.CreateFmdFromFid(captureResult.Data, Constants.Formats.Fmd.ANSI);
SendMessage(Action.SendMessage, "A finger was captured. \r\nCount: " + (count));
if (resultConversion.ResultCode != Constants.ResultCode.DP_SUCCESS)
{
_sender.Reset = true;
throw new Exception(resultConversion.ResultCode.ToString());
}
preenrollmentFmds.Add(resultConversion.Data);
//--------------------CALL METHOD
storePrint(resultConversion);
//
正在引用類DataResult,所以我不能改變它
UPDATE
如果您無法訪問DataResult<T>
類,則可能需要采用稍微不同的方法,並使用不同的可序列化類來包裝此類。 你可以在這里找到一個完整的例子:
上一個答案
錯誤很明顯; 您只需DataResult<T>
類添加無參數構造函數:
public class DataResult<T>
{
// Add a default constructor (public visibility, no parameters)
public DataResult()
{
// You can still define a method body if you wish,
// no restrictions there. Just don't do anything that
// could jeopardize the (de)serialization.
}
}
至於添加默認構造函數的含義,不知道是什么
FeatureExtraction.CreateFmdFromFid(...)
正在創建DataResult<Fmd>
,不可能知道它是否會導致任何問題。
感謝Cory,這是一個有用的答案,但是在這個例子中還有另一種序列化使用方法
tempFingerPrint = Fmd.SerializeXml(resultConversion.Data);
這是Digital Persona SDK特有的
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.