Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / if this.blablabla в интерфейсе. / 7 сообщений из 7, страница 1 из 1
11.12.2013, 15:11
    #38497118
Hawkmoon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
if this.blablabla в интерфейсе.
Слово this гуглится плохо. Видимо, отсюда проблемы, которые не понимаю, как решить.

Есть интерфейс. И есть класс, его реализующий. Понадобилось изменить логику на более сложную, всвязи с тем что нужно поддерживать работоспособность и старого и нового кода.

Кто ответит, что это и что с этим делать?


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
	public class PostgreSQLDBWorker : DBInterface
	{

            int DBInterface.DeleteRule(string a_object_type, string a_object_name)
		{
                      if (this.GetDbVersion() <= 10)
                     {
                            return this.OldHandler(a_object_type, a_object_name);
                     }
                     else
                     {
                      //new code
                          ...
                     }
       }



Ругань на:

Error 118 'Console.PostgreSQLDBWorker' does not contain a definition for 'OldHandler' and no extension method 'OldHandler' accepting a first argument of type 'Console.PostgreSQLDBWorker' could be found


Я ссылаюсь вроде как на this - экземпляр объекта, а оно че-то не хочет его воспринимать. Что я упускаю?
Пока заменил код на юзание не this, а глобальной ссылки на этот объект, но это гогнокод. К тому же, в будущем экземпляр будет явно не один.
...
Рейтинг: 0 / 0
11.12.2013, 15:21
    #38497142
Сон Веры Павловны
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
if this.blablabla в интерфейсе.
вангую, что OldHandler [если он на самом деле существует] является статиком.
...
Рейтинг: 0 / 0
11.12.2013, 16:23
    #38497286
Hawkmoon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
if this.blablabla в интерфейсе.
Сон Веры Павловны,

неа. Вот он:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
        int DBInterface.OldHandler(string object_type, string object_name)
        {
            object[] ParamValues = new object[2];
            ParamValues[0] = object_type;
            ParamValues[1] = object_name;

            return ExecuteNonQueryCommand("DeleteRuleFromAllPatterns", ParamValues);
        }
...
Рейтинг: 0 / 0
11.12.2013, 16:35
    #38497321
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
if this.blablabla в интерфейсе.
Код: c#
1.
return ((DBInterface)this).OldHandler(a_object_type, a_object_name);
...
Рейтинг: 0 / 0
11.12.2013, 17:43
    #38497481
Hawkmoon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
if this.blablabla в интерфейсе.
Алексей К,

Помогло. Теперь интересно, почему. this и так ведь реализует DBInterface
...
Рейтинг: 0 / 0
11.12.2013, 18:04
    #38497518
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
if this.blablabla в интерфейсе.
...
Рейтинг: 0 / 0
11.12.2013, 18:34
    #38497579
Hawkmoon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
if this.blablabla в интерфейсе.
Логично.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / if this.blablabla в интерфейсе. / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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