Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Присвоить объект базового класса объекту наследованного / 12 сообщений из 12, страница 1 из 1
05.06.2013, 15:17
    #38286892
Charles Weyland
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить объект базового класса объекту наследованного
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
class A
{
...
}

class B: A
{
...
}


Как лучше присвоить?
Код: c#
1.
2.
3.
4.
5.
A a;
B b;
....
a = (A)b; //получится
b = (B)a; //не получится. Возможен ли вариант, чтобы получилось такое присвоение?
...
Рейтинг: 0 / 0
05.06.2013, 15:23
    #38286902
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить объект базового класса объекту наследованного
Charles Weyland,

А зачем? Можно разве что написать метод для класса B
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public static B FromA(A someA_)
{
      B newB_ = new B();
      // какое-то присвоение каких-то полей
      ......
      return newB_;
}

//где-то по тексту
A a_ = new A();
B b_ = B.FromA(a_);



естественно это будет новый объект, не имеющий никакого отношения к исходному. Зачем такое нужно, сложно представить
...
Рейтинг: 0 / 0
05.06.2013, 15:45
    #38286945
Charles Weyland
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить объект базового класса объекту наследованного
Мой компонент имеет свойство типа DataTable Source{set;}, но хочется немного расширить его функционал.
Поэтому внутри компонента я использую свой класс DataTableExt. Вот незадача:
Код: c#
1.
2.
3.
4.
5.
6.
7.
DataTable Source
{
   set
   {
      MyDataTableExt = value;
   }
}


не работает.
А таким образом, как ты сказал, переписывать все поля - дофига работы...
...
Рейтинг: 0 / 0
05.06.2013, 15:54
    #38286968
vindofs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить объект базового класса объекту наследованного
Charles WeylandМой компонент имеет свойство типа DataTable Source{set;}, но хочется немного расширить его функционал.
Поэтому внутри компонента я использую свой класс DataTableExt. Вот незадача:
Код: c#
1.
2.
3.
4.
5.
6.
7.
DataTable Source
{
   set
   {
      MyDataTableExt = value;
   }
}


не работает.
А таким образом, как ты сказал, переписывать все поля - дофига работы...

Че-то все равно не понятно.
Если MyDataTableExt наследует DataTable, то
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
private DataTable _source
DataTable Source
{
   set
   {
      _source = value; // value любой наследник от DataTable.
   }
}



Можно еще методы расширения написать для DataTable и не делать доп функциональности через наследование.
...
Рейтинг: 0 / 0
05.06.2013, 15:59
    #38286990
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить объект базового класса объекту наследованного
Charles WeylandDataTable Source
{
set
{
MyDataTableExt = value;
}
}

[/src]
.

Так передавай в качестве value свой Ext, в чем проблема?
...
Рейтинг: 0 / 0
05.06.2013, 16:01
    #38286996
vindofs
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить объект базового класса объекту наследованного
PallarisCharles WeylandDataTable Source
{
set
{
MyDataTableExt = value;
}
}

[/src]
.

Так передавай в качестве value свой Ext, в чем проблема?

Так у него же приватное поле типа MyDataTableExt , а он хочет возвращать и присваивать ему DataTable. Запутался где-то человек. Или бывает идея фикс в голове и все - ступор, хочется только так сделать...
...
Рейтинг: 0 / 0
05.06.2013, 16:06
    #38287008
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить объект базового класса объекту наследованного
vindofsPallarisТак передавай в качестве value свой Ext, в чем проблема?

Так у него же приватное поле типа MyDataTableExt , а он хочет возвращать и присваивать ему DataTable.

Код: sql
1.
2.
3.
4.
DataTable Source
{
      set { MyDataTableExt  = value as DataTableExt; }
}
...
Рейтинг: 0 / 0
05.06.2013, 16:08
    #38287013
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить объект базового класса объекту наследованного
Ну и передавать по-прежнему надо DataTableExt.
...
Рейтинг: 0 / 0
05.06.2013, 16:11
    #38287023
Charles Weyland
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить объект базового класса объекту наследованного
Проблема в том, что в DataTable мне необходимы некоторые поля, события и пара других мелочей, которых там нет. Для этого создал DataTableExt: DataTable
Извне мне поступает DataTable, и я её должен записать в DataTableExt (что будет со значениями полей, которые были добавлены в DataTableExt - для меня не принципиально, непонятно только откуда возьмутся эти значения).
...
Рейтинг: 0 / 0
05.06.2013, 16:13
    #38287033
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить объект базового класса объекту наследованного
Charles WeylandИзвне мне поступает DataTable

Так пусть поступает DataTableExt.

непонятно только откуда возьмутся эти значения)


CLRу на этапе выполнения тем более непонятно.
...
Рейтинг: 0 / 0
05.06.2013, 16:20
    #38287051
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить объект базового класса объекту наследованного
PallarisCharles Weylandнепонятно только откуда возьмутся эти значения)
CLRу на этапе выполнения тем более непонятно.
Charles Weyland, именно по этой причине C# не разрешает преобразование от базового класса к дочернему. Корень проблемы в неправильно спроектированной иерархии классов. Нужно искать другое решение. Насколько я понимаю это продолжение темы с наследованием 14394602 и я там ответил что тебе нужно расширять элемент управления отображающий данные, а не источник данных.
...
Рейтинг: 0 / 0
05.06.2013, 16:28
    #38287064
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Присвоить объект базового класса объекту наследованного
bazileКорень проблемы в неправильно спроектированной иерархии классов. Нужно искать другое решение. .

+1

Во вторых, мне не понятно, почему, даже отнаследовав несчастный DataTable, нельзя сделать скажем:
Код: sql
1.
2.
3.
DataTableExt dte_ = new DataTableExt();
dte_.Load(sqlRequest.ExecuteReader());
MyControl.Source = dte_;



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


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