powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Сериализация
32 сообщений из 32, показаны все 2 страниц
Сериализация
    #38238553
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как сериализовать статический класс (если вообще возможно)?
Статический класс представляет собой настройки приложения. Значения его полей должны быть доступны в любом месте приложения без создания объекта класса. Я понимаю, что сериализуется именно объект, а не сам класс. Но как-то же идет сериализация настроек Properties.Settings.Default в C# и My.Settings в VB... Я попытался разобраться в классе Properties.Settings.Default - но не осилил.

"Пока что сериализую настройки так:"
Код: 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.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
public class Settings
	{
		private static TabAlignment _TabsPosition;
		private static FormWindowState _AppState;
		private static Boolean _AutoStart;
		private static Boolean _HistorySave;
		private static String _HistorySize;
		private static String _Blink;
		private static Boolean _CloseDbl;
		private static Boolean _MinimizeOnClose;
		private static Settings _Setting;

		static Settings() {
		_TabsPosition = TabAlignment.Top;
		_AppState = FormWindowState.Normal;
		_AutoStart = true;
		_HistorySave = true;
		_HistorySize = "100";
		_Blink = "5";
		_CloseDbl = true;
		_MinimizeOnClose = true;
		_Setting = new Settings();
		}

	#region "properties"
		public  TabAlignment TabsPosition {
			get { return _TabsPosition; }
			set { _TabsPosition = value; }
			
		}

		public  FormWindowState AppState {
			get { return _AppState; }
			set { _AppState = value; }
		}

		public  Boolean AutoStart {
			get { return _AutoStart; }
			set { _AutoStart = value; }
		}

		public  Boolean HistorySave {
			get { return _HistorySave; }
			set { _HistorySave = value; }
		}

		
		public  String HistorySize {
			get { return _HistorySize; }
			set { _HistorySize = value; }
		}

		public  String Blink {
			get { return _Blink; }
			set { _Blink = value; }
		}

		
		public  Boolean CloseDbl {
			get { return _CloseDbl; }
			set { _CloseDbl = value; }
		}
		
		public  Boolean MinimizeOnClose {
			get { return _MinimizeOnClose; }
			set { _MinimizeOnClose = value; }
		}

		/// <summary>
		/// Сохранение настроек
		/// </summary>
		public static void Serialize(){
			Stream SerializedLst = File.Create("Settings.xml");
			XmlSerializer serializer = new XmlSerializer(typeof(Settings));
			serializer.Serialize(SerializedLst, _Setting);
			SerializedLst.Close();
		}

		/// <summary>
		/// Загрузка настроек
		/// </summary>
		public static void Deserialize() {
			if(File.Exists("Contacts.xml")) {
				Stream Serialized = File.OpenRead("Settings.xml");
				XmlSerializer deserializer = new XmlSerializer(typeof(Settings));
				_Setting = (Settings)deserializer.Deserialize(Serialized);
				Serialized.Close();
			}
		}
	#endregion
	}


Сериализация:
Код: c#
1.
Settings.Serialize();


Но обратится напрямую к свойствам без создания объекта уже нельзя =(
Код: c#
1.
Settings.TabsPosition //не конает


Если свойствам назначить модификатор static. обращаться без объекта можно, но эти свойства не сериализуются.
Если объявить класс как static, то десериализация не получается - нельзя конвертнуть к статическому типу.
Подскажите хотя бы в каком направлении копать.
...
Рейтинг: 0 / 0
Сериализация
    #38238584
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickopollКак сериализовать статический класс (если вообще возможно)?
Никак. Только обходными путями, типа рефлексией собрать свойства и их значения и сериализовать object[,], потом распрасить обратно. Но всё это от лукавого.
...
Рейтинг: 0 / 0
Сериализация
    #38238602
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я нашел было упоминание, что может помочь DataTable + Base64, но так и не понял, как.
...
Рейтинг: 0 / 0
Сериализация
    #38238607
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Способов много, но все они через зад. Статика зло, перепиши на нормальный класс и больше так не делай.
...
Рейтинг: 0 / 0
Сериализация
    #38238622
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да я бы с радостью не использовал статические данные. Но я понятия не имею. как еще можно реализовать поставленную задачу... Разве что при каждом обращении к настройке каждый раз считывать ее значение с файла. Но здесь много лишних телодвижений, как мне кажется.
...
Рейтинг: 0 / 0
Сериализация
    #38238634
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickopollДа я бы с радостью не использовал статические данные. Но я понятия не имею. как еще можно реализовать поставленную задачу... Разве что при каждом обращении к настройке каждый раз считывать ее значение с файла. Но здесь много лишних телодвижений, как мне кажется.
А в чем проблема?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class Settings
{
    public bool AutoStart { get; set; }
    public bool HistorySave { get; set; }
    public string Blink { get; set; }

    public static Settings Read()
    {
        return new Settings 
        { 
            AutoStart = true,
            HistorySave = false,
            Blink = "блин",
        };
    }
}
...
Рейтинг: 0 / 0
Сериализация
    #38238646
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот блин. Я чет не допер. Настроился на нечто сложное и не вразумительное.

Спасибо!
...
Рейтинг: 0 / 0
Сериализация
    #38239082
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рано радовался =(
cooldeveloper
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class Settings
{
    public bool AutoStart { get; set; }
    public bool HistorySave { get; set; }
    public string Blink { get; set; }

    public static Settings Read()
    {
        return new Settings 
        { 
            AutoStart = true,
            HistorySave = false,
            Blink = "блин",
        };
    }
}


Таким способом настройки никуда не сохраняются без объекта и без статических переменных.
То есть,
Код: c#
1.
2.
Settings.Read().AutoStart = false;
Boolean bl = Settings.Read().AutoStart; //даст все равно true
...
Рейтинг: 0 / 0
Сериализация
    #38239109
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предполагается, что возвращаются значения из хранилища настроек, а не константы, забитые в исходник.
...
Рейтинг: 0 / 0
Сериализация
    #38239136
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickopollТаким способом настройки никуда не сохраняются без объекта и без статических переменных.
То есть,
Код: c#
1.
2.
Settings.Read().AutoStart = false;
Boolean bl = Settings.Read().AutoStart; //даст все равно true


Садись, двойка. Это 2 абсолютно разных объекта.

Код: c#
1.
2.
3.
4.
var obj = Settings.Read();
bool bl = obj.AutoStart; // true
obj.AutoStart = false;
bl = obj.AutoStart; // false



Срочно учить матчасть.
...
Рейтинг: 0 / 0
Сериализация
    #38239147
JohnSparrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Топикстартер, прочитай про шаблон singleton.
...
Рейтинг: 0 / 0
Сериализация
    #38239271
Фотография Denis.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperNickopollДа я бы с радостью не использовал статические данные. Но я понятия не имею. как еще можно реализовать поставленную задачу... Разве что при каждом обращении к настройке каждый раз считывать ее значение с файла. Но здесь много лишних телодвижений, как мне кажется.
А в чем проблема?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
public class Settings
{
    public bool AutoStart { get; set; }
    public bool HistorySave { get; set; }
    public string Blink { get; set; }

    public static Settings Read()
    {
        return new Settings 
        { 
            AutoStart = true,
            HistorySave = false,
            Blink = "блин",
        };
    }
}


wtf?
видимо и впрямь не муся
...
Рейтинг: 0 / 0
Сериализация
    #38239418
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cooldeveloperNickopollТаким способом настройки никуда не сохраняются без объекта и без статических переменных.
То есть,
Код: c#
1.
2.
Settings.Read().AutoStart = false;
Boolean bl = Settings.Read().AutoStart; //даст все равно true


Садись, двойка. Это 2 абсолютно разных объекта.

Я понимаю, что это разные объекты. потому и говорю, что не подходит способ.
cooldeveloper
Код: c#
1.
2.
3.
4.
var obj = Settings.Read();
bool bl = obj.AutoStart; // true
obj.AutoStart = false;
bl = obj.AutoStart; // false


Опять же создание объекта...

JohnSparrow Топикстартер, прочитай про шаблон singleton.
Да, я в немного знаю о синглтоне, но поначалу сомневался. что он мне поможет. Все же пораскинул чуть мозгой - и проблему решил именно синглтоном.
Всем спасибо.
...
Рейтинг: 0 / 0
Сериализация
    #38239490
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickopollЯ понимаю, что это разные объекты. потому и говорю, что не подходит способ.
Не понял, чем не подходит?

NickopollОпять же создание объекта...
Представь себе, всё в дотнете устроено на созданиях объектах

P.S. В чем сложности-то?
...
Рейтинг: 0 / 0
Сериализация
    #38239552
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Представь, я понимаю, что все завязано на объекта, и, как мне кажется, не только в дотнете...

А не подходит тем, что в твоем варианте необходимо создание объекта класса Settings каждый раз, когда необходимо считать/записать какую-либо настройку. Мне же нужно, чтобы существовал максимум один объект на все приложение, был доступен в любом месте и был единожды инициализирован. Потому я ничего лучшего, чем синглетон, не придумал.
Вот, что я получил
Код: 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.
	public class Settings
	{
		private static Settings _Instance;

		public TabAlignment TabsPosition { get; set; }
		public FormWindowState AppState { get; set; }
		public Boolean AutoStart { get; set; }
		public Boolean HistorySave { get; set; }
		public String HistorySize { get; set; }
		public String Blink { get; set; }
		public Boolean CloseDbl { get; set; }
		public Boolean MinimizeOnClose { get; set; }

		public static Settings Setting {
			get {
 				if (_Instance == null){
					_Instance = new Settings {
						TabsPosition = TabAlignment.Top,
						AppState = FormWindowState.Normal,
						AutoStart = true,
						HistorySave = true,
						HistorySize = "100",
						Blink = "5",
						CloseDbl = true,
						MinimizeOnClose = true
					};
 				}
				return _Instance;
			}
			set {
				if (_Instance == null){
					_Instance = new Settings {
						TabsPosition = value.TabsPosition,
						AppState = value.AppState,
						AutoStart = value.AutoStart,
						HistorySave = value.HistorySave,
						HistorySize = value.HistorySize,
						Blink = value.Blink,
						CloseDbl = value.CloseDbl,
						MinimizeOnClose = value.MinimizeOnClose
					};
				} else {
					_Instance.TabsPosition = value.TabsPosition;
					_Instance.AppState = value.AppState;
					_Instance.AutoStart = value.AutoStart;
					_Instance.HistorySave = value.HistorySave;
					_Instance.HistorySize = value.HistorySize;
					_Instance.Blink = value.Blink;
					_Instance.CloseDbl = value.CloseDbl;
					_Instance.MinimizeOnClose = value.MinimizeOnClose;
				}				
			}
		}

		public static void Serialize() {
			Stream SerializedLst = File.Create("Settings.xml");
			XmlSerializer serializer = new XmlSerializer(typeof(Settings));
			serializer.Serialize(SerializedLst, Settings.Setting);
			SerializedLst.Close();
		}
	}


Использование:
Код: c#
1.
2.
Settings.Setting.AutoStart = false;
Boolean bl = Settings.Setting.AutoStart;//false


Вот этого я и добивался.
...
Рейтинг: 0 / 0
Сериализация
    #38239560
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickopollА не подходит тем, что в твоем варианте необходимо создание объекта класса Settings каждый раз, когда необходимо считать/записать какую-либо настройку.
Ну так кешируй, если нужно считать только один раз. Причем тут сам класс? Класс описал, а инструмент, который с ним работает, кеширует, сериализует и т.д. - это уже другая композиция. Учи матчасть что-ле.
...
Рейтинг: 0 / 0
Сериализация
    #38239569
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А надо было написать пару строк кода-то...

Код: 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.
public class Settings
{
    public bool AutoStart { get; set; }
    public bool HistorySave { get; set; }
    public string Blink { get; set; }

    private static Settings _cahce;
    public static Settings Read()
    {
        if (_cahce == null)
        {
            _cahce = new Settings
            {
                AutoStart = true,
                HistorySave = false,
                Blink = "блин",
            };
        }

        return _cahce;
    }

    public static void Flush()
    {
        _cahce = null;
    }
}



P.S. Но, вообще, все эти синглтоны - зло. Класс - для описания , логика работы (вычитывание из конфига, кеширование и т.д.) - другой независимый класс .
...
Рейтинг: 0 / 0
Сериализация
    #38239604
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cooldeveloper логика работы (вычитывание из конфига, кеширование и т.д.) - другой независимый класс
Вот тут недопонял.
Имеется ввиду, абстрактные классы и реализация их методов в дочерних?
...
Рейтинг: 0 / 0
Сериализация
    #38239632
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nickopollcooldeveloper логика работы (вычитывание из конфига, кеширование и т.д.) - другой независимый класс
Вот тут недопонял.
Имеется ввиду, абстрактные классы и реализация их методов в дочерних?

Код: c#
1.
2.
3.
4.
5.
6.
7.
// Описание настроек
public class Store
{
    public bool AutoStart { get; set; }
    public bool HistorySave { get; set; }
    public string Blink { get; set; }
}




Код: 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.
// Класс для работы с конфигом
public class Settings
{
    private static Store _cahce;
    public static Store Read()
    {
        if (_cahce == null)
        {
            _cahce = new Store
            {
                AutoStart = true,
                HistorySave = false,
                Blink = "блин",
            };
        }

        return _cahce;
    }

    public static void Flush()
    {
        _cahce = null;
    }
}



Ты получаешь и сериализацию, и отдельную независимую логику чтения настроек. Нужно будет что-то еще, напишешь еще отдельный класс, который может работать с Store. Ну что непонятно-то?
...
Рейтинг: 0 / 0
Сериализация
    #38239646
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperПредставь себе, всё в дотнете устроено на созданиях объектах

Код: c#
1.
var res = Math.Sin(Math.Pow(Math.PI, Math.E));


Это тоже?
...
Рейтинг: 0 / 0
Сериализация
    #38239676
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Дык, а мне и не нужно в данном приложении разбивать один класс на два. Это не какой-то архипорект и подобные действия не целесообразны в данном случае.
...
Рейтинг: 0 / 0
Сериализация
    #38239682
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВcooldeveloperПредставь себе, всё в дотнете устроено на созданиях объектах

Код: c#
1.
var res = Math.Sin(Math.Pow(Math.PI, Math.E));


Это тоже?

Да.
...
Рейтинг: 0 / 0
Сериализация
    #38239689
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickopollДык, а мне и не нужно в данном приложении разбивать один класс на два. Это не какой-то архипорект и подобные действия не целесообразны в данном случае.
Декомпозиция целесообразна всегда вне зависимости от масштаба проекта. Пихать всё в единственный класс карается законом о гавнокоде.
...
Рейтинг: 0 / 0
Сериализация
    #38239699
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cooldeveloperNickopollДык, а мне и не нужно в данном приложении разбивать один класс на два. Это не какой-то архипорект и подобные действия не целесообразны в данном случае.
Декомпозиция целесообразна всегда вне зависимости от масштаба проекта. Пихать всё в единственный класс карается законом о гавнокоде.
Исходя из твоей логики, целесообразно каждую переменную распихать по отдельным классам и это говнокодом считаться не будет...
...
Рейтинг: 0 / 0
Сериализация
    #38239714
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickopollИсходя из твоей логики, целесообразно каждую переменную распихать по отдельным классам и это говнокодом считаться не будет...
Не вижу корреляции между декомпозицией задач описания и задач логики. Шагом марш читать Application Architecture Guide от MS. Глава Объектно-ориентированная архитектура, она тебе расскажет, что такое абстракция, композиция, наследование, инкапсуляция, полиморфизм и отделение. Там же ты узнаешь, что такое понятность, возможность повторного использования, тестируемость, расширяемость и высокая связность.
А пока присаживайся, двойка.
...
Рейтинг: 0 / 0
Сериализация
    #38239749
Nickopoll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да при чем здесь определения вышеизложенных понятий? Я говорю о том, что в моем приложении нет нужды в декомпозиции, тобой описанной. И я не вижу ни одной причины, почему это должно называться говнокодом. У меня в этом классе сидят только поле _Instance и проперти. Сериализацию/десериализацию я вынес в отдельный класс, в котором собраны все сериализации/десериализации для остальных классов. Разбивать класс еще больше - бред.
...
Рейтинг: 0 / 0
Сериализация
    #38239770
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NickopollДа при чем здесь определения вышеизложенных понятий?
Вышеизложенные "понятия" дают понимание, почему каша, которую ты делаешь, является помойкой.

NickopollЯ говорю о том, что в моем приложении нет нужды в декомпозиции, тобой описанной.
1. Во-первых, не важно, если ли нужна или нет, писать так как ты пишешь - уже означает, что делаешь ты чрезвычайно плохо.
2. Во-вторых, декомпозиция таки тебе нужна - сериализация, ты же сам начал плакать, что не можешь сериализовать свой статический гавнокласс.
3. В-третьих, закладывать логику сериализации в прикладной бизнес класс, как это сделал ты в сабже - безумное УГ, не поддающееся здравому смыслу. Ты будешь дублировать это во всех классах, в которых требуется сериализация?
4. Заколадывать логику сериализации / десериализации в класс нужно только тогда, когда хочешь переопределить поведения сериалайзера IXmlSerializable. Например, тут добавляются комментарии к атрибутам. И то, нужно сделать отдельную обертку над бизнес-классом для таких манипуляций.

NickopollИ я не вижу ни одной причины, почему это должно называться говнокодом.
Я тебе назвал уже 100500 причин, почему твои жалкие потуги - унылый гавнокод. Если трудности с пониманием, можешь в сад сходить, там объяснят понятнее, чем я.

NickopollУ меня в этом классе сидят только поле _Instance и проперти. Сериализацию/десериализацию я вынес в отдельный класс, в котором собраны все сериализации/десериализации для остальных классов. Разбивать класс еще больше - бред.
Если по твоей логике генерировались бы классы для Entity Framework или Linq to SQL, то мир бы уже содрогнулся от ужаса. Но не тут-то было, разработчики MS вполне адекватные люди и не будут пихать гавностатику с логикой куда ни попадя. Есть бизнес классы и есть умный датаконтекст. И точка.
...
Рейтинг: 0 / 0
Сериализация
    #38239784
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Сериализация
    #38239793
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloperЕвгенийВпропущено...

Код: c#
1.
var res = Math.Sin(Math.Pow(Math.PI, Math.E));


Это тоже?

Да.
В каком месте?
...
Рейтинг: 0 / 0
Сериализация
    #38239802
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕвгенийВВ каком месте?
Math - это статический класс. Тебе предоставить RTFM по статическим классам и рассказать, как они работают? Всегда пожалуйста:

... http://msdn.microsoft.com/ru-ru/library/79b3xss3.aspx Статический класс в основном такой же, что и нестатический класс, но имеется одно отличие: нельзя создавать экземпляры статического класса.

http://msdn.microsoft.com/ru-ru/library/79b3xss3.aspx Как и в случае с типами всех классов сведения о типе для статического класса загружаются средой CLR .NET Framework, когда загружается программа, которая ссылается на класс. Программа не может точно указать, когда загружается класс. Но гарантируется загрузка этого класса, инициализация его полей и вызов статического конструктора перед первым обращением к классу в программе.

http://msdn.microsoft.com/ru-ru/library/79b3xss3.aspx Хотя поле, не может быть объявлено как static const, поле const по своему поведению является статическим. Оно относится к типу, а не к экземплярам типа. Поэтому к полям const можно обращаться с использованием той же нотации ClassName.MemberName, что и используемой для статических полей. Необходим экземпляр объекта.

Когда возьмешься за голову, начнешь думать и читать документацию? Не первый раз тебе об этом говорю уже.
...
Рейтинг: 0 / 0
Сериализация
    #38239816
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cooldeveloper Why Singletons are Evil
Well used singletons are GOOD!

зы: Полностью не читал, просто название статьи понравилось.
...
Рейтинг: 0 / 0
Сериализация
    #38239833
cooldeveloper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кcooldeveloper Why Singletons are Evil
Well used singletons are GOOD!

зы: Полностью не читал, просто название статьи понравилось.

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


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