ホームページ > バックエンド開発 > C#.Net チュートリアル > C# エンティティ クラスのシリアル化と逆シリアル化 2 (DataContractSerializer)

C# エンティティ クラスのシリアル化と逆シリアル化 2 (DataContractSerializer)

黄舟
リリース: 2017-02-15 11:30:00
オリジナル
2099 人が閲覧しました

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

<pre class="csharp"><pre class="csharp"><pre class="csharp">using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Runtime.Serialization;

using System.IO;

using System.Xml;

 

namespace Common.Utility.XMLSerialization

{

    /// <summary>

    /// DataContractSerializer

    /// </summary>

    /// <typeparam name="T"></typeparam>

    public class DataContractSerializer<T>

    {

        /// <summary>

        /// 实体序列化成xml string

        /// </summary>

        /// <param name="meta"></param>

        /// <returns></returns>

        public static string ToXMLString(T meta)

        {

            DataContractSerializer dcs = new DataContractSerializer(typeof(T));

            string xmlStr = string.Empty;

            using (MemoryStream ms = new MemoryStream())

            {

                try

                {

                    dcs.WriteObject(ms, meta);

                    xmlStr = Encoding.UTF8.GetString(ms.ToArray());

                    ms.Close();

                }

                catch

                {

                    throw;

                }

            }

            return xmlStr;

        }

        /// <summary>

        /// DataContract序列化

        /// </summary>

        /// <param name="value"></param>

        /// <param name="knownTypes">已知类型的集合</param>

        /// <returns></returns>

        public static string ToXMLString(object value, IEnumerable<Type> knownTypes = null)

        {

            try

            {

                DataContractSerializer dataContractSerializer = new DataContractSerializer(value.GetType(), knownTypes);

                using (MemoryStream ms = new MemoryStream())

                {

                    dataContractSerializer.WriteObject(ms, value);

                    ms.Seek(0, SeekOrigin.Begin);

                    using (StreamReader sr = new StreamReader(ms))

                    {

                        return sr.ReadToEnd();

                    }

                }

            }

            catch

            {

                throw;

            }

        }

        /// <summary>

        /// 实体反序列化

        /// </summary>

        /// <param name="xml"></param>

        /// <returns></returns>

        public static T ReadFromXML(string xmlStr)

        {

            T meta;

            try

            {

                DataContractSerializer dcs = new DataContractSerializer(typeof(T));

                using (TextReader reader = new StringReader(xmlStr))

                {

                    using (XmlReader xReader = XmlReader.Create(reader))

                    {

                        meta = (T)dcs.ReadObject(xReader);

                    }

                }

            }

            catch

            {

                throw;

            }

            return meta;

        }

 

        /// <summary>

        /// 实体反序列化

        /// </summary>

        /// <param name="xmlStr"></param>

        /// <param name="knownTypes">IEnumerable<Type></param>

        /// <returns></returns>

        public static T ReadFromXML(string xmlStr, IEnumerable<Type> knownTypes = null)

        {

            T meta;

            try

            {

                DataContractSerializer dcs = new DataContractSerializer(typeof(T), knownTypes);

                using (TextReader reader = new StringReader(xmlStr))

                {

                    using (XmlReader xReader = XmlReader.Create(reader))

                    {

                        meta = (T)dcs.ReadObject(xReader);

                    }

                }

            }

            catch

            {

                throw;

            }

            return meta;

        }

    }

}

ログイン後にコピー


上記は、C# エンティティ クラスのシリアル化と逆シリアル化 2 (DataContractSerializer) の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート