편집 : 내 문제에 대한 해결책은 IXMLSerializer를 구현하는 것입니다. 빠른 답변을 보내 주신 모든 분들께 감사드립니다.ISerialization 생성자가 호출되지 않습니다.
안녕하세요.이 문제가 발생하여 적절한 해결책을 찾지 못하는 것 같습니다.
나는 다음과 같은 클래스를 가지고
내가serializer.Deserialize(new StringReader("<?xml version="1.0" encoding="utf-16"?><Test><Id>0</Id><ChildId>10</ChildId></Test>");
를 역 직렬화하려면 다음 코드를 사용하여
<?xml version="1.0" encoding="utf-16"?><Test><Id>0</Id><ChildId>10</ChildId></Test>
을 deserialzed 할 수있는 다음과 같은 XML을 보내는 경우 내가 생각
public class Child
{
private int _id;
public int Id
{
get { return _id; }
set { _id = value; }
}
}
[Serializable]
public class Test: ISerializable
{
private int _id;
public int Id
{
get { return _id; }
set { _id = value; }
}
private Child _child = new Child();
public Child Child
{
get { return _child; }
set { _child = value; }
}
public Test()
{
}
protected Test(SerializationInfo info, StreamingContext context)
{
if (info.MemberCount > 1)
Child.Id = info.GetInt32("ChildId");
}
#region ISerializable Members
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("ChildId", Child.Id);
}
#endregion
}
그 부를 것이다 내 직렬화 생성자,하지만 일은 결코 호출되지 않습니다.
내가 대신 위의 게시 된 XML을 사용하고이 하나
<?xml version="1.0" encoding="utf-16"?><Test><Id>0</Id><Child><Id>10</Id></Child></Test>
내가 다른 응용 프로그램에서 게시 된 XML을 얻고 있기 때문에
, 그래서 수동으로 자식 개체를 생성하고 내에서 수동으로 값을 할당 할 필요가 건설자.
정말로 도움을 주셔서 감사합니다.
저는 XmlSerializer를 사용하고 있습니다 만, 직렬화 생성자는 직렬화 복원시 호출됩니다. – Paleta
어떤 serializer를 사용해야합니까? – Paleta