Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2016, 11:39   #1
is2000
 
Регистрация: 08.07.2015
Сообщений: 5
По умолчанию Не удается определить тип

Здравствуйте!
есть класс

Код:
    public class Atom<T>
    {
        protected T core;
        public T Core 
        {
            set
            {
                this.core = value;

                this    .OnAtomSetValue(        this, null );
            }
        }

                public event EventHandler OnAtomSetValue                = delegate { };
и т.д. ...

где-то в другом месте

Код:
public void OnValue( object sender, EventArgs e )
{
...
{

Atom<int?> atom = new Atom<int?>(null);
atom.OnAtomSetValue += OnValue;

atom.Core = 1;
Вопрос:
Внутри OnValue не могу нормально увидеть тип sender'а:
Type t = sender.GetType() - дает имя типа "Atom'1"
и еще: как на лету узнать имя типа Core ?

Спасибо.

______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.

Последний раз редактировалось Alex11223; 03.11.2016 в 11:41.
is2000 вне форума Ответить с цитированием
Старый 03.11.2016, 11:45   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Код:
.GetType().GetGenericArguments()
А зачем оно понадобилось?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 03.11.2016, 13:32   #3
is2000
 
Регистрация: 08.07.2015
Сообщений: 5
По умолчанию

Есть обобщенный класс Atom<T>, в котором есть событие на присваивание некоему свойству типа Т величины типа Т.

Созданы экземпляры: Atom<bool> b = new Atom<bool>(), Atom<int> i = new Atom<int>() и т.д. Событиям экземпляров добавлен ЕДИНЫЙ обработчик событий: b.OnSetValue += OnValue, i.OnSetValue += OnValue и т.д.

Понадобилось, чтобы в данном случае был единый обработчик, а внутри него уже был бы разбор типа Т с дальнейшими ветвлениями

Вопрос: В обработчике события можно ли как-то явно увидеть какого типа Т - bool, int или т.д. И в именах обобщенных классов добавлен суффикс `1.
is2000 вне форума Ответить с цитированием
Старый 03.11.2016, 13:33   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

вам уже показали как взять параметры генериков.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не удается определить издателя LeGna1 Общие вопросы .NET 9 07.08.2015 20:07
borland C++. Даны числа: a b c. Определить, могут ли они быть сторонами треугольника, и если да, то определить его тип Evgeniy73 Помощь студентам 6 02.07.2014 08:32
Определить возвращаемый тип 220Volt Общие вопросы C/C++ 2 11.04.2014 16:05
Определить тип треугольника k1r1ch Общие вопросы Delphi 14 16.10.2009 16:27
Не удается определить номер строки (ячейки) находящейся в фокусе в StringGrid Дамир Компоненты Delphi 5 02.11.2008 12:17