powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Реализация Generic и не Generic интерфейса в 1 классе
1 сообщений из 1, страница 1 из 1
Реализация Generic и не Generic интерфейса в 1 классе
    #38008702
xpoft2010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Возникла необходимость реализовать Generic и не Generic интерфейс в 1 классе. В итоге реализация вылилась в нечто "говнистое" на мой взгляд, может есть какое то более изящное решение?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
namespace GenericInterfaceDemo
{
    public class GenericEventArgs<T> : EventArgs{
        public T Current{get;set;}
        public GenericEventArgs(T value){
            this.Current = value;
        }
    }

    public interface INonGenericDemo {
        event EventHandler<GenericEventArgs<String>> MyEvent;

        void DoSomething();
    }

    public interface IDemoGenericInterface<T> : INonGenericDemo {
        new event EventHandler<GenericEventArgs<T>> MyEvent;
    }
    
    public class Demo : IDemoGenericInterface<Int32>, INonGenericDemo
    {
        public void DoSomething(){
            OnMyEvent(100);
            OnMyEvent("Строка");
        }

        public event EventHandler<GenericEventArgs<Int32>> MyEvent;

        private event EventHandler<GenericEventArgs<string>> MyNonGenericEvent;
        event EventHandler<GenericEventArgs<string>> INonGenericDemo.MyEvent {
            add { MyNonGenericEvent += value; }
            remove { MyNonGenericEvent -= value; }
        }

        private void OnMyEvent(Int32 value) {
            var handler = this.MyEvent;
            if (handler != null) {
                var e = new GenericEventArgs<Int32>(value);
                handler(this, e);
            }
        }
        
        private void OnMyEvent(String value) {
            var handler = this.MyNonGenericEvent;
            if (handler != null) {
                var e = new GenericEventArgs<String>(value);
                handler(this, e);
            }
        }

    }
}



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


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