C# C++ 相互序列化
2009-01-08 18:21
204 查看
最近项目需要,为了解决C++和C#之间Socket通信,能够传对象。
写了个C++序列化的功能主要是兼容C#序列化的格式,这样用C++序列化的xml,可以用C#反序列化回来,反之同理。
不敢藏起来,拿出来同大家分享。
话不多说,直接上代码。http://files.cnblogs.com/ShadowK/seri.rar
C#部分。
public class MidClass
public class TestClass
class Program
#pragma once
#include "stdafx.h"
#include "Markup.h"
#include "string.h"
#include "string"
#include <list>
using namespace std;
//Xml序列化基类,要序列化的对象需要继承该类。
//目前支持的字段类型为:字符串,字符串列表,对象,对象列表。
class XmlSerialize
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
//实例化一个将被序列化的类。
TestClass t1;
t1.P1 = "this is a string";
t1.P2.AddTail(CString("string list 1"));
t1.P2.AddTail(CString("string list 2"));
t1.P3.P1 = "object";
MidClass m1;
MidClass m2;
m1.P1 = "object list 1";
m2.P1 = "object list 2";
t1.P4.AddTail(m1);
t1.P4.AddTail(m2);
//序列化。
//可以把序列化后的xml拿到c#反序列化。
CString xml = t1.Serialize();
//反序列化,可以输入一个由C#对象序列化后的xml,
//注意C#对象字段不能为null,如果是能为null的字段(如string),请初始化为空串。
TestClass t2;
t2.Deserialize(xml);
return 0;
}
写了个C++序列化的功能主要是兼容C#序列化的格式,这样用C++序列化的xml,可以用C#反序列化回来,反之同理。
不敢藏起来,拿出来同大家分享。
话不多说,直接上代码。http://files.cnblogs.com/ShadowK/seri.rar
C#部分。
public class MidClass
public class TestClass
class Program
#pragma once
#include "stdafx.h"
#include "Markup.h"
#include "string.h"
#include "string"
#include <list>
using namespace std;
//Xml序列化基类,要序列化的对象需要继承该类。
//目前支持的字段类型为:字符串,字符串列表,对象,对象列表。
class XmlSerialize
int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
//实例化一个将被序列化的类。
TestClass t1;
t1.P1 = "this is a string";
t1.P2.AddTail(CString("string list 1"));
t1.P2.AddTail(CString("string list 2"));
t1.P3.P1 = "object";
MidClass m1;
MidClass m2;
m1.P1 = "object list 1";
m2.P1 = "object list 2";
t1.P4.AddTail(m1);
t1.P4.AddTail(m2);
//序列化。
//可以把序列化后的xml拿到c#反序列化。
CString xml = t1.Serialize();
//反序列化,可以输入一个由C#对象序列化后的xml,
//注意C#对象字段不能为null,如果是能为null的字段(如string),请初始化为空串。
TestClass t2;
t2.Deserialize(xml);
return 0;
}
相关文章推荐
- c# XML和实体类之间相互转换(序列化和反序列化)
- C++和C#编写并且相互调用COM组件
- c# XML和实体类之间相互转换(序列化和反序列化)(转)
- C++、C#写的WebService相互调用
- C# C++ dll的相互调用
- 关于WinRT中c++和c#相互调用的问题
- c# XML和实体类之间相互转换(序列化和反序列化)
- C#和C++之间通过WM_COPYDATA相互传递数据结构
- [转贴]C++、C#写的WebService相互调用
- c# XML和实体类之间相互转换(序列化和反序列化)
- 关于WinRT中c++和c#相互调用的问题
- C++和C#相互调用COM组件的方法简介
- [转载]C++、C#写的WebService相互调用
- C# C++ dll的相互调用
- 用C#实现XML和实体类之间序列化和反序列化相互转换
- 一个经过改良的XMLHelper(包含了序列化,反序列化,创建xml文件,读取节点,C#对象与xml文件的相互转换等等。)
- C# C++ dll的相互调用
- C++、C#写的WebService相互调用
- C++和C# WebService相互调用
- C#实现XML与实体类之间相互转换的方法(序列化与反序列化)