|
Сериализация
|
|||
---|---|---|---|
#18+
Как сериализовать статический класс (если вообще возможно)? Статический класс представляет собой настройки приложения. Значения его полей должны быть доступны в любом месте приложения без создания объекта класса. Я понимаю, что сериализуется именно объект, а не сам класс. Но как-то же идет сериализация настроек 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.
Сериализация: Код: c# 1.
Но обратится напрямую к свойствам без создания объекта уже нельзя =( Код: c# 1.
Если свойствам назначить модификатор static. обращаться без объекта можно, но эти свойства не сериализуются. Если объявить класс как static, то десериализация не получается - нельзя конвертнуть к статическому типу. Подскажите хотя бы в каком направлении копать. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2013, 16:30 |
|
Сериализация
|
|||
---|---|---|---|
#18+
NickopollКак сериализовать статический класс (если вообще возможно)? Никак. Только обходными путями, типа рефлексией собрать свойства и их значения и сериализовать object[,], потом распрасить обратно. Но всё это от лукавого. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2013, 16:43 |
|
Сериализация
|
|||
---|---|---|---|
#18+
Я нашел было упоминание, что может помочь DataTable + Base64, но так и не понял, как. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2013, 16:49 |
|
Сериализация
|
|||
---|---|---|---|
#18+
Способов много, но все они через зад. Статика зло, перепиши на нормальный класс и больше так не делай. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2013, 16:50 |
|
Сериализация
|
|||
---|---|---|---|
#18+
Да я бы с радостью не использовал статические данные. Но я понятия не имею. как еще можно реализовать поставленную задачу... Разве что при каждом обращении к настройке каждый раз считывать ее значение с файла. Но здесь много лишних телодвижений, как мне кажется. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2013, 16:57 |
|
Сериализация
|
|||
---|---|---|---|
#18+
NickopollДа я бы с радостью не использовал статические данные. Но я понятия не имею. как еще можно реализовать поставленную задачу... Разве что при каждом обращении к настройке каждый раз считывать ее значение с файла. Но здесь много лишних телодвижений, как мне кажется. А в чем проблема? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2013, 17:01 |
|
Сериализация
|
|||
---|---|---|---|
#18+
Вот блин. Я чет не допер. Настроился на нечто сложное и не вразумительное. Спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2013, 17:08 |
|
Сериализация
|
|||
---|---|---|---|
#18+
Рано радовался =( cooldeveloper Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
Таким способом настройки никуда не сохраняются без объекта и без статических переменных. То есть, Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2013, 21:14 |
|
Сериализация
|
|||
---|---|---|---|
#18+
Предполагается, что возвращаются значения из хранилища настроек, а не константы, забитые в исходник. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2013, 21:34 |
|
Сериализация
|
|||
---|---|---|---|
#18+
NickopollТаким способом настройки никуда не сохраняются без объекта и без статических переменных. То есть, Код: c# 1. 2.
Садись, двойка. Это 2 абсолютно разных объекта. Код: c# 1. 2. 3. 4.
Срочно учить матчасть. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2013, 21:56 |
|
Сериализация
|
|||
---|---|---|---|
#18+
Топикстартер, прочитай про шаблон singleton. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.04.2013, 22:12 |
|
Сериализация
|
|||
---|---|---|---|
#18+
cooldeveloperNickopollДа я бы с радостью не использовал статические данные. Но я понятия не имею. как еще можно реализовать поставленную задачу... Разве что при каждом обращении к настройке каждый раз считывать ее значение с файла. Но здесь много лишних телодвижений, как мне кажется. А в чем проблема? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16.
wtf? видимо и впрямь не муся ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2013, 02:15 |
|
Сериализация
|
|||
---|---|---|---|
#18+
cooldeveloperNickopollТаким способом настройки никуда не сохраняются без объекта и без статических переменных. То есть, Код: c# 1. 2.
Садись, двойка. Это 2 абсолютно разных объекта. Я понимаю, что это разные объекты. потому и говорю, что не подходит способ. cooldeveloper Код: c# 1. 2. 3. 4.
Опять же создание объекта... JohnSparrow Топикстартер, прочитай про шаблон singleton. Да, я в немного знаю о синглтоне, но поначалу сомневался. что он мне поможет. Все же пораскинул чуть мозгой - и проблему решил именно синглтоном. Всем спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2013, 09:35 |
|
Сериализация
|
|||
---|---|---|---|
#18+
NickopollЯ понимаю, что это разные объекты. потому и говорю, что не подходит способ. Не понял, чем не подходит? NickopollОпять же создание объекта... Представь себе, всё в дотнете устроено на созданиях объектах P.S. В чем сложности-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2013, 10:11 |
|
Сериализация
|
|||
---|---|---|---|
#18+
Представь, я понимаю, что все завязано на объекта, и, как мне кажется, не только в дотнете... А не подходит тем, что в твоем варианте необходимо создание объекта класса 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.
Использование: Код: c# 1. 2.
Вот этого я и добивался. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2013, 10:39 |
|
Сериализация
|
|||
---|---|---|---|
#18+
NickopollА не подходит тем, что в твоем варианте необходимо создание объекта класса Settings каждый раз, когда необходимо считать/записать какую-либо настройку. Ну так кешируй, если нужно считать только один раз. Причем тут сам класс? Класс описал, а инструмент, который с ним работает, кеширует, сериализует и т.д. - это уже другая композиция. Учи матчасть что-ле. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2013, 10:45 |
|
Сериализация
|
|||
---|---|---|---|
#18+
А надо было написать пару строк кода-то... Код: 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.
P.S. Но, вообще, все эти синглтоны - зло. Класс - для описания , логика работы (вычитывание из конфига, кеширование и т.д.) - другой независимый класс . ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2013, 10:48 |
|
Сериализация
|
|||
---|---|---|---|
#18+
cooldeveloper логика работы (вычитывание из конфига, кеширование и т.д.) - другой независимый класс Вот тут недопонял. Имеется ввиду, абстрактные классы и реализация их методов в дочерних? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2013, 11:05 |
|
Сериализация
|
|||
---|---|---|---|
#18+
Nickopollcooldeveloper логика работы (вычитывание из конфига, кеширование и т.д.) - другой независимый класс Вот тут недопонял. Имеется ввиду, абстрактные классы и реализация их методов в дочерних? Код: c# 1. 2. 3. 4. 5. 6. 7.
Код: 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.
Ты получаешь и сериализацию, и отдельную независимую логику чтения настроек. Нужно будет что-то еще, напишешь еще отдельный класс, который может работать с Store. Ну что непонятно-то? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2013, 11:16 |
|
Сериализация
|
|||
---|---|---|---|
#18+
cooldeveloperПредставь себе, всё в дотнете устроено на созданиях объектах Код: c# 1.
Это тоже? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2013, 11:22 |
|
Сериализация
|
|||
---|---|---|---|
#18+
Дык, а мне и не нужно в данном приложении разбивать один класс на два. Это не какой-то архипорект и подобные действия не целесообразны в данном случае. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2013, 11:34 |
|
Сериализация
|
|||
---|---|---|---|
#18+
ЕвгенийВcooldeveloperПредставь себе, всё в дотнете устроено на созданиях объектах Код: c# 1.
Это тоже? Да. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2013, 11:36 |
|
Сериализация
|
|||
---|---|---|---|
#18+
NickopollДык, а мне и не нужно в данном приложении разбивать один класс на два. Это не какой-то архипорект и подобные действия не целесообразны в данном случае. Декомпозиция целесообразна всегда вне зависимости от масштаба проекта. Пихать всё в единственный класс карается законом о гавнокоде. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2013, 11:38 |
|
Сериализация
|
|||
---|---|---|---|
#18+
cooldeveloperNickopollДык, а мне и не нужно в данном приложении разбивать один класс на два. Это не какой-то архипорект и подобные действия не целесообразны в данном случае. Декомпозиция целесообразна всегда вне зависимости от масштаба проекта. Пихать всё в единственный класс карается законом о гавнокоде. Исходя из твоей логики, целесообразно каждую переменную распихать по отдельным классам и это говнокодом считаться не будет... ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2013, 11:42 |
|
Сериализация
|
|||
---|---|---|---|
#18+
NickopollИсходя из твоей логики, целесообразно каждую переменную распихать по отдельным классам и это говнокодом считаться не будет... Не вижу корреляции между декомпозицией задач описания и задач логики. Шагом марш читать Application Architecture Guide от MS. Глава Объектно-ориентированная архитектура, она тебе расскажет, что такое абстракция, композиция, наследование, инкапсуляция, полиморфизм и отделение. Там же ты узнаешь, что такое понятность, возможность повторного использования, тестируемость, расширяемость и высокая связность. А пока присаживайся, двойка. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.04.2013, 11:48 |
|
|
start [/forum/topic.php?fid=20&fpage=166&tid=1404790]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
75ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 181ms |
0 / 0 |