Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Передача неизвестного метода/объекта, передача в качестве параметра 
:(
    Опции темы
webgraf
Дата 19.12.2008, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 5.6.2007

Репутация: нет
Всего: нет



Не хватает знаний в ООП c#.

Есть мой класс, ему в качестве параметра нужно передать другой неизвестный класс. Чтобы быть конкретнее: 
формирую в dataset-е класс dataAdapter1, у него есть метод GetData(string name). 
Мой класс как то должен принимать этот адаптер и использовать этот метод.  Как ему указать использовать нужный метод нужного класса?

PM MAIL   Вверх
Partizan
Дата 19.12.2008, 15:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



webgraf, Надо создать интерфейс

Код

public interface IDataAdapter
{
      int GetData(string name);
}


каждый созданный dataAdapter должен быть наследником IDataAdapter и вся остальная работа должна быть с объектом типа IDataAdapter, через который и дёргается GetData


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
webgraf
Дата 19.12.2008, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 5.6.2007

Репутация: нет
Всего: нет



Если я указываю что dataAdapter является наследником интерфейса, получается что мне нужно еще и написать реализацию GetData в кажом dataAdapter-е, так ведь? 
Плохо преставляю как это должно выглядеть.  В design коде GetData вообще как public virtual фигурирует. Как такие методы реализуются?
PM MAIL   Вверх
Partizan
Дата 19.12.2008, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



webgraf, объясните подробнее что вы делаете и что вам нужно получить


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
webgraf
Дата 19.12.2008, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 5.6.2007

Репутация: нет
Всего: нет



User Control должен получать некий DataTableAdapter123 с методом Getdata(string name) и использовать его в своих корыстных целях.
Классы DataTableAdapter крайне желательно делать в design-mode датасета.

При попытке реализовать общий интерфейс сталкиваюсь трудностью.

Код

'WindowsFormsApplication17.DataSet1TableAdapters.depart1TableAdapter' does not implement interface member 'WindowsFormsApplication17.IDataAdapter.GetData(string)'. 'WindowsFormsApplication17.DataSet1TableAdapters.depart1TableAdapter.GetData(string)' cannot implement 'WindowsFormsApplication17.IDataAdapter.GetData(string)' because it does not have the matching return type of 'System.Data.DataTable'.    D:\Visual Studio 2008 Projects\WindowsFormsApplication17\WindowsFormsApplication17\DataSet1.cs


Как я понимаю не сходятся тип Getdata в интерфейсе и реализованный по-умолчанию design-mode-ом. Что делать?
Раньше никогда не делал интерфейсов. в MSDN примеры слишком простые, с реализацией property. 
PM MAIL   Вверх
Partizan
Дата 19.12.2008, 17:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



webgraf, какой возвращаемый тип у depart1TableAdapter.GetData(string)?


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
webgraf
Дата 19.12.2008, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 5.6.2007

Репутация: нет
Всего: нет



Должен возвращать System.Data.DataTable. 

В дезайн коде он прописан как
Код

        public virtual DataSet1.departDataTable GetData() {
            this.Adapter.SelectCommand = this.CommandCollection[0];
            DataSet1.departDataTable dataTable = new DataSet1.departDataTable();
            this.Adapter.Fill(dataTable);
            return dataTable;
        }

дальше копать не стал.
PM MAIL   Вверх
Partizan
Дата 19.12.2008, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: 18
Всего: 67



Код

        public virtual DataTable GetData() {
            this.Adapter.SelectCommand = this.CommandCollection[0];
            DataSet1.departDataTable dataTable = new DataSet1.departDataTable();
            this.Adapter.Fill(dataTable);
            return dataTable;
        }



--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0593 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.