2.C#中泛型在方法Method上的实现

时间:2021-10-05 12:06:04
  • 阅读目录

        一:C#中泛型在方法Method上的实现

        把Persion类型序列化为XML格式的字符串,把Book类型序列化为XML格式的字符串,但是只写一份代码,而不是public static string GetSerializeredString(Book book)这个方法写一份,再public static string GetSerializeredString(Persion persion)再写一份方法,而是在方法的调用时候再给他传数据类型的类型

     1 using System;
    2 using System.Collections.Generic;
    3 using System.IO;
    4 using System.Linq;
    5 using System.Text;
    6 using System.Threading.Tasks;
    7 using System.Xml.Serialization;
    8
    9 namespace GenericMethod2
    10 {
    11 class Program
    12 {
    13 static void Main(string[] args)
    14 {
    15 Book book = new Book();
    16 book.BookNumber = "001";
    17 book.Name = "《西游记》";
    18
    19 Person person = new Person();
    20 person.PersonName = "张三";
    21
    22 string bookXMLString = GetSerializeredString<Book>(book);
    23
    24 string personXMLString = GetSerializeredString<Person>(person);
    25
    26 Console.WriteLine(bookXMLString);
    27
    28 Console.WriteLine("--------------");
    29
    30 Console.WriteLine(personXMLString);
    31 Console.ReadLine();
    32 }
    33
    34 /// <summary>
    35 /// 根据对象和泛型得到序列化后的字符串
    36 /// </summary>
    37 /// <typeparam name="T"></typeparam>
    38 /// <param name="t"></param>
    39 /// <returns></returns>
    40 public static string GetSerializeredString<T>(T t)
    41 {
    42 //1.step 序列化为字符串
    43 XmlSerializer xmlserializer = new XmlSerializer(typeof(T));
    44 MemoryStream ms = new MemoryStream();
    45 xmlserializer.Serialize(ms, t);
    46 string xmlString = Encoding.UTF8.GetString(ms.ToArray());
    47
    48 return xmlString;
    49 }
    50
    51 }
    52
    53 [Serializable()]
    54 [XmlRoot]
    55 public class Book
    56 {
    57 string _booknumber = "";
    58 [XmlElement]
    59 public string BookNumber
    60 {
    61 get { return _booknumber; }
    62 set { _booknumber = value; }
    63 }
    64
    65 string _name = "";
    66 [XmlElement]
    67 public string Name
    68 {
    69 get { return _name; }
    70 set { _name = value; }
    71 }
    72 }
    73
    74 [Serializable()]
    75 [XmlRoot]
    76 public class Person
    77 {
    78 string _personName = "";
    79 [XmlElement]
    80 public string PersonName
    81 {
    82 get { return _personName; }
    83 set { _personName = value; }
    84 }
    85 }
    86
    87 }

    2.C#中泛型在方法Method上的实现