powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Переопределенные функции -обертка?
4 сообщений из 4, страница 1 из 1
Переопределенные функции -обертка?
    #38845083
Фотография Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем добрый вечер
Разбираясь в примере кода наткнулся вот на такой код:
Код: c#
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.
 

//1
     public static bool Deserialize(string xml, out MyAppState obj)
        {
            System.Exception exception = null;
            return Deserialize(xml, out obj, out exception);
        }
//2
 public static bool Deserialize(string xml, out MyAppState obj, out System.Exception exception)
        {
            exception = null;
            obj = default(MyAppState );
            try
            {
                obj = Deserialize(xml);
                return true;
            }
            catch (System.Exception ex)
            {
                exception = ex;
                return false;
            }
        }

   //3
        public static MyAppState Deserialize(string xml)
        {
            System.IO.StringReader stringReader = null;
            try
            {
                stringReader = new System.IO.StringReader(xml);
                return ((MyAppState )(Serializer.Deserialize(System.Xml.XmlReader.Create(stringReader))));
            }
            finally
            {
                if ((stringReader != null))
                {
                    stringReader.Dispose();
                }
            }
        }


Порядок вызова методов я проставил в комментариях
При этом в коде вызывается только третий метод, например вот так:
Код: c#
1.
 return Deserialize(xmlString);


Теперь вопрос: зачем делать несколько переопределенных методов? Это какой то паттерн или что то еще?
Заранее спасибо.
...
Рейтинг: 0 / 0
Переопределенные функции -обертка?
    #38845136
JeStone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей,

Обычная перегрузка методов. Зачем это было сделано вам лучше спросить у автора кода. Возможно с заделом на будущее "а вдруг пригодится".
...
Рейтинг: 0 / 0
Переопределенные функции -обертка?
    #38845170
Фотография Алексей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JeStone,


спасибо что развеяли мои сомнения....

Тема закрыта
...
Рейтинг: 0 / 0
Переопределенные функции -обертка?
    #38845396
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
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.
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace WpfApplication3
{
    public static class XmlSerializeHelper
    {
        public static string Serialize<T>(T obj)
        {
            var serializer = new XmlSerializer(typeof(T));
            var stream = new StringWriter();
            var settings = new XmlWriterSettings
            {
                NewLineChars = "\n",
                IndentChars = "\t",
                Indent = true,
            };

            var xmlWriter = XmlWriter.Create(stream, settings);

            serializer.Serialize(xmlWriter, obj);
            return stream.ToString();
        }

        public static T Deserialize<T>(string xmlString)
        {
            var serializer = new XmlSerializer(typeof(T));
            var stream = new StringReader(xmlString);
            return (T)serializer.Deserialize(stream);
        }

        public static TS Serialize<T, TS>(T obj, TS stream) where TS : Stream 
        {
            var serializer = new XmlSerializer(typeof(T));
            return (TS)serializer.Deserialize(stream);
        }

        public static T Deserialize<T, TS>(TS stream) where TS: Stream
        {
            var serializer = new XmlSerializer(typeof(T));
            return (T)serializer.Deserialize(stream);
        }
    }

    public class XmlClass
    {
        [XmlAttribute]
        public string Attribute { set; get; }
        [XmlArray("Elements"), XmlArrayItem("Element")]
        public List<string> Elements { set; get; }
        public override string ToString()
        {
            return string.Format("XmlClass: Attribute = {0}, Elements = {1}", Attribute, string.Join(", ", Elements));
        }
    }

    [TestClass]
    public class MyTestClass
    {
        [TestMethod]
        public void MyTestMethod()
        {
            var obj = new XmlClass
            {
                Attribute = "AttributeValue1",
                Elements = new List<string> {"Element1", "Element2"}
            };
            var xmlString = XmlSerializeHelper.Serialize(obj);
            Debug.Print(xmlString);
            var obj2 = XmlSerializeHelper.Deserialize<XmlClass>(xmlString);
            Debug.Print(obj2.ToString());

        }
    }
}
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Переопределенные функции -обертка?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]