|
Виртуальные поля или как-то так...
|
|||
---|---|---|---|
#18+
Есть базовый класс и два наследника. У наследников по полю-константе - всё одинаково - тип (int), имя, доступность (публично), только значение разное. Как сделать так, чтобы объявление было в базовом классе, а инициализация - в потомках? Придумал сделать виртуальное свойство рид-онли (толко геттер). Но тогда для него нужно поле. Ну и инициализацию этого поля базового класса делать в конструкторе потомка. Однако, проблема в том, что это поле будет использоваться для инициализации других данных в конструкторе базового класса. С моим подходом получается так. Вывод программы: 100 200 0 0 а надо 100 200 100 200 Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2015, 16:15 |
|
Виртуальные поля или как-то так...
|
|||
---|---|---|---|
#18+
авторполю-константе У меня в примере не константы, но сути это не меняет. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2015, 16:16 |
|
Виртуальные поля или как-то так...
|
|||
---|---|---|---|
#18+
При этом не хотелось бы в конструкторы унаследованных классов передавать значение для поля _a базового класса, чтобы потом это значение передать в конструктор базового класса - пользователь не должен задумываться, как оно там всё настраивается. Он должен просто создать объект такого-то класса и знать, что этот объект настроился так-то. А мне нужно удобство и для удобства хочу иметь забовый класс с таким вот полем. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2015, 16:20 |
|
Виртуальные поля или как-то так...
|
|||
---|---|---|---|
#18+
Короче, штука в том, что есть базовый класс, который содержит общие поля, и есть унаследованные классы, которые инициализируют эти поля каждый по-своему. При этом в базовом классе ещё проходит одинаковая по коду для всех унаследованных классов инициализация других вещей, но значение используется каждый раз своё - из унаследованного класса. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2015, 16:23 |
|
Виртуальные поля или как-то так...
|
|||
---|---|---|---|
#18+
Так, Скит сказал, что порядок инициализации такой http://stackoverflow.com/a/1882778/808128 Значит, только через падачу параметра в базовый конструктор... ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2015, 16:30 |
|
Виртуальные поля или как-то так...
|
|||
---|---|---|---|
#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. 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2015, 16:32 |
|
Виртуальные поля или как-то так...
|
|||
---|---|---|---|
#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. 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2015, 16:34 |
|
Виртуальные поля или как-то так...
|
|||
---|---|---|---|
#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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2015, 16:38 |
|
Виртуальные поля или как-то так...
|
|||
---|---|---|---|
#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. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48.
... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2015, 17:05 |
|
Виртуальные поля или как-то так...
|
|||
---|---|---|---|
#18+
зачем этот цирк? ... |
|||
:
Нравится:
Не нравится:
|
|||
29.03.2015, 18:31 |
|
|
start [/forum/topic.php?fid=20&msg=38920415&tid=1401739]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 132ms |
0 / 0 |