powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Вызов функций и методов из другого класса
5 сообщений из 5, страница 1 из 1
Вызов функций и методов из другого класса
    #39914747
Фотография Roust_m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день,

Ну ругайте сильно, я пока чайник самоучка на C#.

У меня есть два класса, XeroExport и XeroExportWeb.

Код: 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.
namespace Export
{
    public partial class XeroExport: ApiWrapper
    {
        public void DBExport(DateTime reportDate, int practiceID, string practiceShortName, string practiceName, string practiceCode, string entityName, XeroCoreApi xeroCoreApi)
        {
            DateTime startDate = DateTime.ParseExact(ConfigurationManager.AppSettings["PeriodStart"], "yyyy-MM-dd HH:mm:ss,fff", System.Globalization.CultureInfo.InvariantCulture);
            DateTime endDate = DateTime.ParseExact(ConfigurationManager.AppSettings["PeriodEnd"], "yyyy-MM-dd HH:mm:ss,fff", System.Globalization.CultureInfo.InvariantCulture);
            var today = DateTime.Now;
            Cleanup(startDate, endDate, entityName, "[Xero].[BalanceSheet]");
            Call_BalanceSheet(reportDate, practiceID, practiceShortName, practiceName, practiceCode, entityName, startDate, endDate, xeroCoreApi);
        }

        public void Cleanup(DateTime periodStart, DateTime periodEnd, String entityName, String tableName)
        {
            var connectionString = ConfigurationManager.AppSettings["ConnectionString"];
            string cleanup_Reports_SQL = "dbo.uspCleanup";
            SqlConnection con = new SqlConnection(connectionString);
            DateTime startDate = periodStart;
            DateTime endDate = periodEnd;
            con.Open();
            ...
            _ = cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            con.Close();
        }

    }




Код: 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.
namespace Export
{
        public partial class XeroExport
        {
            public void Call_BalanceSheet(DateTime reportDate, int practiceID, string practiceShortName, string practiceName, string practiceCode, string entityName, DateTime periodStart, DateTime periodEnd, Xero.Api.Core.XeroCoreApi xeroCoreApi)
            {
                int delay_ms = 1000;
                var org = xeroCoreApi.Organisation;
                ...
                        Insert_BalanceSheet(reportDate, practiceID, practiceShortName, practiceName, practiceCode, entityName, monthStartDate, monthEndDate, xeroCoreApi);
                ...
                    }
                }
            }
            public void Insert_BalanceSheet(DateTime reportDate, int practiceID, string practiceShortName, string practiceName, string practiceCode, string entityName, DateTime periodStart, DateTime periodEnd, Xero.Api.Core.XeroCoreApi xeroCoreApi)
            {
                var connectionString = ConfigurationManager.AppSettings["ConnectionString"];
                string uspInsert_BalanceSheet_SQL = "dbo.uspInsert_BS";
                SqlConnection con = new SqlConnection(connectionString);
                ...
                con.Open();
                ...
                                SqlCommand cmd = new SqlCommand(uspInsert_BalanceSheet_SQL, con);
                                cmd.CommandType = CommandType.StoredProcedure;
                                SqlParameter param;
                                param = 
                                ...
                                param = cmd.Parameters.Add("@ReportDate", SqlDbType.DateTime);
                                param.Value = reportDate;
                                _ = cmd.ExecuteNonQuery();
                                cmd.Parameters.Clear();
                ...
                con.Close();
            }
        }
}



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
namespace Export
{
    public class XeroExportWeb : ApiWrapper
    {
        public void DBExportWeb(DateTime reportDate, int practiceID, string practiceShortName, string practiceName, string practiceCode, string entityName, XeroCoreApi xeroCoreApi, string reportName, DateTime startDate, DateTime endDate)
        {
            var today = DateTime.Now;
            if (reportName == "Balance Sheet")
            {
                XeroExport.Cleanup(startDate, endDate, entityName, "[Xero].[SourceData_Transposed_BalanceSheet_ALLYTD]");
                XeroExport.Call_BalanceSheet(reportDate, practiceID, practiceShortName, practiceName, practiceCode, entityName, startDate, endDate, xeroCoreApi);
            }

            if (reportName == "Profit and Loss")
            {
                XeroExport.Cleanup(startDate, endDate, entityName, "[Xero].[SourceData_Transposed_PnL_ALLYTD]");
                XeroExport.Call_P_and_Ls(reportDate, practiceID, practiceShortName, practiceName, practiceCode, entityName, startDate, endDate, xeroCoreApi);
            }
        }
    }
}



На строчки типа:
Код: c#
1.
2.
XeroExport.Cleanup(...)
XeroExport.Call_BalanceSheet(...)


Я получаю ошибку:
"an object reference is required for the non-static field method or property..."

Подскажите пжлста, что мне поменять в коде, чтобы это исправить?
Переносить Cleanup, Call_P_and_Ls и Call_BalanceSheet со всеми сопутсвующими блоками в класс XeroExportWeb мне не хочется.

Спасибо.
...
Рейтинг: 0 / 0
Вызов функций и методов из другого класса
    #39914749
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создать сначала экземпляр XeroExport, а потом уже обращаться к его методам.
...
Рейтинг: 0 / 0
Вызов функций и методов из другого класса
    #39914751
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или унаследовать XeroExportWeb от XeroExport, если это возможно
...
Рейтинг: 0 / 0
Вызов функций и методов из другого класса
    #39914870
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всегда раздражает когда у методов столько аргументов вызова, это ппц.
эта проблема обычно связана с тем, что вы выбрали не подход ООП, а подход функционального.
как по мне, если в качестве аргумента передается >5 аргументов имеет смысл обернуть их в отдельный тип.
Если аргументов много их можно переносить на другую строку, в коде на много удобнее перемещаться вертикально, а не горизонтально

сам подход к паттерну Wrapper подразумевает наследование в другую сторону, то есть это либо Wrapper должен иметь ссылку на оборачиваемый объект или наследовать функциональность существующего класса
...
Рейтинг: 0 / 0
Вызов функций и методов из другого класса
    #39915364
Фотография ЕвгенийВ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes

эта проблема обычно связана с тем, что вы выбрали не подход ООП, а подход функционального.

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


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