Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# доступ к свойствам объекта переданного как object / 10 сообщений из 10, страница 1 из 1
02.12.2014, 21:40
    #38823037
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# доступ к свойствам объекта переданного как object
Доброго времени суток

Возник такой вопрос как получить доступ к свойствам объекта в методе который был передан как object

Пример:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
 void SetControlVisibility(object sender, bool visibility)
        {
          // sender.Visibility = visibility;
          //надо как то понять что sender ссылается на объект типа TextBox
        }

 void Main()
 {
   SetControlVisibility(TextBox1, true);
 }



В VB такой проблемы нет, он автоматом приводит к нужному типу, а как вопрос решить в шарпах?
...
Рейтинг: 0 / 0
02.12.2014, 21:55
    #38823047
buser
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# доступ к свойствам объекта переданного как object
as, is, typeof, dynamic... UIElement/Control или что там у вас... а вообще это как-то неделаративненько :)
...
Рейтинг: 0 / 0
02.12.2014, 21:55
    #38823048
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# доступ к свойствам объекта переданного как object
Привести его к нужному типу явно
Код: c#
1.
(MyType)sender


Проверить, является ли он определенным типом или его наследником можно так
Код: c#
1.
sender is MyType


Можно получить сам тип
Код: c#
1.
sender.GetType()


Можно проверить наличие и установить нужное свойство через рефлексию.


Но лучше всего - избавиться от object!
...
Рейтинг: 0 / 0
03.12.2014, 01:13
    #38823153
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# доступ к свойствам объекта переданного как object
Shocker.Pro,

Фишка как раз в том что я хотел ограничиться одним универсальным методом для задания некоторых "общих" свойств разных классов.

понятное дело что к примеру код:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 void SetControlVisibility_TextBox(TextBox sender, bool visibility)
        {
           sender.Visibility = visibility;
        }

 void SetControlVisibility_ComboBox(ComboBox sender, bool visibility)
        {
           sender.Visibility = visibility;
        }

 void Main()
 {
   SetControlVisibility_TextBox(TextBox1, true);
   SetControlVisibility_ComboBox(ComboBox1, false);
   SetControlVisibility_ComboBox(ComboBox2, true);
 }



будет работать так как я хочу
но если различных объектов управления у меня не 1-2 а 10-15 и свойств не по одному а скажем 3-4 получается надо написать порядка 30-40 методов.

В данном случае сильно бы помог полиморфизм метода если бы объекты были производными одного класса (Правда не совсем понимаю что мешает object?)

add: точно! забыл про отражение, сейчас поэксперементирую
...
Рейтинг: 0 / 0
03.12.2014, 01:43
    #38823159
petalvik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# доступ к свойствам объекта переданного как object
felix_ff,

если это TextBox и ComboBox из WindowsForms, то у них общий предок Control, у которого есть свойство Visible.
Приводи object к типу Control, либо сразу используй Control.
...
Рейтинг: 0 / 0
03.12.2014, 12:03
    #38823451
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# доступ к свойствам объекта переданного как object
petalvik,

Generic?
...
Рейтинг: 0 / 0
03.12.2014, 12:31
    #38823509
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# доступ к свойствам объекта переданного как object
felix_ffВ данном случае сильно бы помог полиморфизм метода если бы объекты были производными одного класса

Внезапно - все перечисленные объекты являются наследниками класса Control
...
Рейтинг: 0 / 0
03.12.2014, 12:43
    #38823529
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# доступ к свойствам объекта переданного как object
автору явно стоит изучить тему ОООП
...
Рейтинг: 0 / 0
03.12.2014, 13:02
    #38823563
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# доступ к свойствам объекта переданного как object
Да и вообще, накой делать отдельный метод для этого случая?
Код: c#
1.
2.
3.
4.
5.
6.
void Main()
 {
   TextBox1.Visible = true;
   ComboBox1.Visible = false;
   ComboBox2.Visible = true;
 }
...
Рейтинг: 0 / 0
03.12.2014, 13:08
    #38823572
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
c# доступ к свойствам объекта переданного как object
Pallaris, думаю, ответил на вопрос TC. Я с generic - не в кассу.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# доступ к свойствам объекта переданного как object / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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