powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Присвоить объект базового класса объекту наследованного
12 сообщений из 12, страница 1 из 1
Присвоить объект базового класса объекту наследованного
    #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
Присвоить объект базового класса объекту наследованного
    #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
Присвоить объект базового класса объекту наследованного
    #38286945
Charles Weyland
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мой компонент имеет свойство типа DataTable Source{set;}, но хочется немного расширить его функционал.
Поэтому внутри компонента я использую свой класс DataTableExt. Вот незадача:
Код: c#
1.
2.
3.
4.
5.
6.
7.
DataTable Source
{
   set
   {
      MyDataTableExt = value;
   }
}


не работает.
А таким образом, как ты сказал, переписывать все поля - дофига работы...
...
Рейтинг: 0 / 0
Присвоить объект базового класса объекту наследованного
    #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
Присвоить объект базового класса объекту наследованного
    #38286990
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Charles WeylandDataTable Source
{
set
{
MyDataTableExt = value;
}
}

[/src]
.

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

[/src]
.

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

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

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

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

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

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


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

+1

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



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


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