|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Добрый день, Помогите чайнику. Есть такой класс: XeroExport.cs. В нем очень много кода. Он выглядит примерно так: Код: 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.
Я хочу методы Call_BalanceSheet и Insert_BalanceSheet вынести в отдельный класс: BalanceSheet.cs: Код: 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.
После того как я это делаю, XeroExport.cs не находит Call_BalanceSheet, BalanceSheet.cs не находит CheckReportStatus и Api. Как сделать так, чтобы они видели методы друг друга? Не ругайте сильно, опыта программирования у меня не много. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 10:00 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Конечно, не найдет. Они же у тебя как private объявлены. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 10:37 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Вообще, если зашла речь о такой декомпозиции, то тебе лучше сразу изучить про "Dependency Injection" и делать все это по SOLID. Могу посоветовать вот такую книгу: Марк Симан: Внедрение зависимостей в .NET ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 10:43 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Похоже немного разобрался как достучаться до Call_BalanceSheet и CheckReportStatus: В ExcelExport создать переменную: Код: c# 1. 2. 3.
И также в BalanceSheet: Код: c# 1. 2.
А вот с Api никак. Скопировал в BalanceSheet.cs все "using" из XeroExport.cs: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
Все равно не работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 10:48 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
fkthatКонечно, не найдет. Они же у тебя как private объявлены. Это я исправил. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 10:52 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
А вот с Api не могу разобраться. Она в другом проекте. Почему-то XeroExport.cs ее видит, а вот BalanceSheet.cs - нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:01 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Roust_mА вот с Api не могу разобраться. Она в другом проекте. Почему-то XeroExport.cs ее видит, а вот BalanceSheet.cs - нет. Наверное проект не добавлен в "References". В Solution Explorer правый клик по "Dependencies", потом "Add reference -> Solution" и поставить галку на нужный проект. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:07 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
fkthatRoust_mА вот с Api не могу разобраться. Она в другом проекте. Почему-то XeroExport.cs ее видит, а вот BalanceSheet.cs - нет. Наверное проект не добавлен в "References". В Solution Explorer правый клик по "Dependencies", потом "Add reference -> Solution" и поставить галку на нужный проект. Но ведь это на уровне проекта? XeroExport.cs и BalanceSheet.cs - в одном проекте и даже в одном namespace. Api - в другом проекте. Почему XeroExport.cs видит Api, а BalanceSheet.cs - не видит? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:34 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
А solution - один на всех ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:36 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Roust_mfkthatпропущено... Наверное проект не добавлен в "References". В Solution Explorer правый клик по "Dependencies", потом "Add reference -> Solution" и поставить галку на нужный проект. Но ведь это на уровне проекта? XeroExport.cs и BalanceSheet.cs - в одном проекте и даже в одном namespace. Api - в другом проекте. Почему XeroExport.cs видит Api, а BalanceSheet.cs - не видит? потому что (покажите этот класс): Код: c# 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:37 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Roust_mНо ведь это на уровне проекта? XeroExport.cs и BalanceSheet.cs - в одном проекте и даже в одном namespace. Api - в другом проекте. Почему XeroExport.cs видит Api, а BalanceSheet.cs - не видит? C using-ами все ок? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:38 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Можно сделать partial class, раз уж размер исходника так смущает. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:39 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Konst_OneRoust_mпропущено... Но ведь это на уровне проекта? XeroExport.cs и BalanceSheet.cs - в одном проекте и даже в одном namespace. Api - в другом проекте. Почему XeroExport.cs видит Api, а BalanceSheet.cs - не видит? потому что (покажите этот класс): Код: c# 1.
А где его показать? В BalanceSheet.cs? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:46 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
fkthatRoust_mНо ведь это на уровне проекта? XeroExport.cs и BalanceSheet.cs - в одном проекте и даже в одном namespace. Api - в другом проекте. Почему XeroExport.cs видит Api, а BalanceSheet.cs - не видит? C using-ами все ок? Да, юзинги одинаковые у обоих классов. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:47 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Konst_OneRoust_mпропущено... Но ведь это на уровне проекта? XeroExport.cs и BalanceSheet.cs - в одном проекте и даже в одном namespace. Api - в другом проекте. Почему XeroExport.cs видит Api, а BalanceSheet.cs - не видит? потому что (покажите этот класс): Код: c# 1.
Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:49 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныМожно сделать partial class, раз уж размер исходника так смущает. Ага. При желании, можно вообще все приложение сделать как один большой partial класс. А при большом желании можно и хер сломать, хоть он и без костей. Как будто приложение по классам разбивают только чтобы отдельные файлы исходников поменьше были. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:51 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Сон Веры ПавловныМожно сделать partial class, раз уж размер исходника так смущает. Это интересная идея, почитаю на эту тему. А то я замучался связывать эти классы. А кода действительно много, пока долистаешь до нужного класса... ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:53 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
fkthatСон Веры ПавловныМожно сделать partial class, раз уж размер исходника так смущает. Ага. При желании, можно вообще все приложение сделать как один большой partial класс. А при большом желании можно и хер сломать, хоть он и без костей. Как будто приложение по классам разбивают только чтобы отдельные файлы исходников поменьше были. Мне такие высоты рано пока. Мне просто для удобства. Слишком много исходника на одном файле. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 11:54 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Roust_mЭто интересная идея, почитаю на эту тему. А то я замучался связывать эти классы. А кода действительно много, пока долистаешь до нужного класса... Паршиал классы придумали для вполне определенной цели - разнести по разным файлам сгенеренную каким-либо генератором часть класса и ту часть класса, которая пишется руками. Использовать их для чего-то другого нафиг не следует. Если твой класс большой, то его просто надо разбивать на несколько. Листать по классам, в чем проблема-то - "F12" ("Go to definition") и попадаешь сразу в нужное тебе место. Можно и в обратную сторону - "Find all references" - и сразу видишь что и где какой-либо твой код вызывает. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 12:11 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
fkthatКак будто приложение по классам разбивают только чтобы отдельные файлы исходников поменьше были. Ну, исходя из стартового постинга, ТС хочет разбить на классы именно по этой причине. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 12:40 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Спасибо, очень хорошо получилось, гораздо легче работать стало. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 14:06 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
К слову, в части реализации винформсового DataGridView (причем не похоже, что это автосгенеренный код) 29999 строк. И ничего, писали как-то люди, работали с этим. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 17:07 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
fkthatПаршиал классы придумали для вполне определенной цели - разнести по разным файлам сгенеренную каким-либо генератором часть класса и ту часть класса, которая пишется руками. Использовать их для чего-то другого нафиг не следует. Если твой класс большой, то его просто надо разбивать на несколько. То же самое когда-то говорилось и о регионах (regions). Хотите сказать, не используете их? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 22:16 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
LRТо же самое когда-то говорилось и о регионах (regions). Хотите сказать, не используете их? Нет. А зачем? Если класс большой, то наверняка он нарушает принцип "Single responsibility" и его надо просто разбивать на меньшие. А регионы - это просто разновидность комментариев, с тем отличием, что их сворачивать можно в IDE. Функциональной роли они никакой не играют. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 22:32 |
|
Вынос части кода в другой класс в C#
|
|||
---|---|---|---|
#18+
fkthatНет. А зачем? Если класс большой, то наверняка он нарушает принцип "Single responsibility" и его надо просто разбивать на меньшие. А регионы - это просто разновидность комментариев, с тем отличием, что их сворачивать можно в IDE. Функциональной роли они никакой не играют. Т.е., для каждого класса свой файл-исходник? И если классов в проекте очень много - много и файлов. Но кому-то проще структурировать с помощью регионов в нескольких файлах. Партиал классы тоже можна использовать для структурирования (по интерфейсам/контрактам или по кодерам). Еще их иногда удобно использовать в сочетании с "Add As Link" (для нескольких проектов), это дает возможность избавится от необходимости создания отдельной сборки с базовым классом. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2019, 23:33 |
|
|
start [/forum/topic.php?fid=20&msg=39877558&tid=1398758]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
149ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 10ms |
total: | 268ms |
0 / 0 |