コード例 #1
0
ファイル: ScriptObject.cs プロジェクト: minuowa/Monos
 public virtual void SyncClient(DBPkg pkg)
 {
     Console.WriteLine("sync: " + pkg.GetType().Name);
     string data = DBSerializer.serializePKG(pkg);
     Console.WriteLine("SyncClient: " + data);
     DB_SyncClient(mDBInterface.guid, data);
 }
コード例 #2
0
ファイル: DBSerializer.cs プロジェクト: minuowa/Monos
        public static string serializePKG(DBPkg pkg)
        {
            Console.WriteLine("serializePKG");
            Type tp = pkg.GetType();
            List<string> columns = DBSerializer.getDBColoumns(tp);
            Console.WriteLine("serializePKG" + columns.Count.ToString());

            XmlDocument doc = new XmlDocument();
            XmlElement root = doc.CreateElement("db_data");
            doc.AppendChild(root);

            root.SetAttribute("type", tp.FullName);
            root.SetAttribute("guid", pkg.guid);

            for (int i = 0; i < columns.Count; ++i)
            {
                XmlElement argnode = doc.CreateElement("field");
                root.AppendChild(argnode);
                FieldInfo field = tp.GetField(columns[i]);
                argnode.SetAttribute("type", field.FieldType.Name);
                argnode.SetAttribute("name", columns[i]);
                argnode.SetAttribute("value", DBSerializer.serializeField(field.FieldType, field.GetValue(pkg)));
            }

            System.IO.MemoryStream ms = new System.IO.MemoryStream(1024);
            doc.Save(ms);
            return Encoding.UTF8.GetString(ms.ToArray());
        }