Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / как в C# обратиться к свойствам и методам объекта, заданного ссылкой object / 11 сообщений из 11, страница 1 из 1
02.05.2015, 21:36
    #38950664
damp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в C# обратиться к свойствам и методам объекта, заданного ссылкой object
в VB.Net такое возможно:

Код: vbnet
1.
2.
3.
4.
Private Sub MySub(ByVal sender As System.Object, ByVal e As System.EventArgs) 
         
            Console.WriteLine(sender.name)
..... 



решил переписать в C# - выдает ошибку:

Код: c#
1.
2.
3.
private void mySub(Object sender, EventArgs e)
        { Console.WriteLine(sender.name)  ;  
..... 



как мне обратиться к свойствам и методам sender, не хочется дописывать проверки на типы, потом приводить и т.д. - много работы,
есть ли простой метод получения типа объекта, если не знаешь заранее ?

Спасибо.
...
Рейтинг: 0 / 0
02.05.2015, 22:03
    #38950670
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в C# обратиться к свойствам и методам объекта, заданного ссылкой object
как-нибудь так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
  class Program
  {
    static void Main(string[] args)
    {
      object w = new foo();

      Console.WriteLine(w.GetType().GetField("Name").GetValue(w));
      w.GetType().GetMethod("Print").Invoke(w, null);
      Console.ReadKey();

    }
    public class foo
    {
      public string Name = "ggg";
      public void Print()
      {
        Console.WriteLine("qqq");
      }
    }
  }
...
Рейтинг: 0 / 0
02.05.2015, 23:50
    #38950694
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в C# обратиться к свойствам и методам объекта, заданного ссылкой object
damp,

нужно использовать интерфейсы или абстрактные классы. Для этих целей, это самый верный путь, использовать рефлексию неоправданное зло в данном случае. имхо.
...
Рейтинг: 0 / 0
03.05.2015, 09:49
    #38950732
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в C# обратиться к свойствам и методам объекта, заданного ссылкой object
Перегрузить ToString()
...
Рейтинг: 0 / 0
03.05.2015, 09:52
    #38950734
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в C# обратиться к свойствам и методам объекта, заданного ссылкой object
ужоснах

На 99% уверен, что достаточно
Код: c#
1.
 sender as Control
...
Рейтинг: 0 / 0
03.05.2015, 10:34
    #38950740
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в C# обратиться к свойствам и методам объекта, заданного ссылкой object
Изопропилужоснах

На 99% уверен, что достаточно
Код: c#
1.
 sender as Control


+1

Добавлю вам еще один процент. Чтобы было 100%.
:-)
...
Рейтинг: 0 / 0
03.05.2015, 17:05
    #38950793
damp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в C# обратиться к свойствам и методам объекта, заданного ссылкой object
D129Изопропилужоснах

На 99% уверен, что достаточно
Код: c#
1.
 sender as Control


+1

Добавлю вам еще один процент. Чтобы было 100%.
:-)
Это и так ясно.
Вопрос был в другом. Это был просто пример.

У меня много форм, коллекций и т.д. разных типов, я добавлял к ним свойства, методы и обращался просто ч/з object в vb.net.
В C# нужно обязательно привести к типу обеспечивающему требуемую функциональность, для этого нужны проверки на тип. Или наследовать от предка в котором такая функциональность прописана.
Просто думал есть способ попроще ч/з object , но видимо нет
...
Рейтинг: 0 / 0
03.05.2015, 17:13
    #38950795
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в C# обратиться к свойствам и методам объекта, заданного ссылкой object
damp,

VB.NET (при включенной Option Strinct Off) всё равно при кодогенерации в сборку, дополнительно кастовал в нужный тип или использовал позднее связывывание (у него есть сервисные классы для этих целей). Лучше будет всё же объявить ваши объекты с конкретным типом.
...
Рейтинг: 0 / 0
03.05.2015, 17:14
    #38950796
VSVLAD
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в C# обратиться к свойствам и методам объекта, заданного ссылкой object
поправочка, Option Strict Off
...
Рейтинг: 0 / 0
03.05.2015, 17:16
    #38950797
D129
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в C# обратиться к свойствам и методам объекта, заданного ссылкой object
dampD129пропущено...

+1

Добавлю вам еще один процент. Чтобы было 100%.
:-)
Это и так ясно.
Вопрос был в другом. Это был просто пример.

У меня много форм, коллекций и т.д. разных типов, я добавлял к ним свойства, методы и обращался просто ч/з object в vb.net.
В C# нужно обязательно привести к типу обеспечивающему требуемую функциональность, для этого нужны проверки на тип. Или наследовать от предка в котором такая функциональность прописана.
Просто думал есть способ попроще ч/з object , но видимо нет

Вообще-то есть. Но он проще для написания - но совсем не проще для компьютера.
Как там адепты натив кода говорят - "медленный" - и часто зря, а вот тут нет, не зря. Реально медленный способ.

:-)

Код: c#
1.
((dynamic)sender).IfAnyExist("any parameter");
...
Рейтинг: 0 / 0
03.05.2015, 17:32
    #38950801
Roman Mejtes
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как в C# обратиться к свойствам и методам объекта, заданного ссылкой object
dampD129пропущено...

+1

Добавлю вам еще один процент. Чтобы было 100%.
:-)
Это и так ясно.
Вопрос был в другом. Это был просто пример.

У меня много форм, коллекций и т.д. разных типов, я добавлял к ним свойства, методы и обращался просто ч/з object в vb.net.
В C# нужно обязательно привести к типу обеспечивающему требуемую функциональность, для этого нужны проверки на тип. Или наследовать от предка в котором такая функциональность прописана.
Просто думал есть способ попроще ч/з object , но видимо нет
это говорит лишь о том, что у вас говнокод, лапша из кода
если бы использовали наследование и интерфейсы, то проблем бы таких не было.
Класс (В том числе и класс формы) может наследовать любое количество интерфейсов, в которых вы свои методы определите и через интерфейс будите их вызывать.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / как в C# обратиться к свойствам и методам объекта, заданного ссылкой object / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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