powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / MyList<T> получить инфу о T
15 сообщений из 15, страница 1 из 1
MyList<T> получить инфу о T
    #38390955
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пришлось делать обертку над List<T> для реализации одного нужного метода GetProperties().
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class ParameterList<T>:ParameterObject
    {
        private List<T> list_ = new List<T>();
        public List<T> list
        {
            get { return list_; }
        }
        public string[] GetProperties()
        {
               ..................
        }
     }


Внутрях этого метода нужно понять, что это у нас за Т (является ли он наследником от SomeBaseClass). Как это лучше сделать? Кроме как
Код: sql
1.
2.
3.
4.
5.
6.
if (list_.Count > 0)
{
     SomeBaseClass test_ = list_[0] as SomeBaseClass;
     if (test_ != null)
     {}
}
...
Рейтинг: 0 / 0
MyList<T> получить инфу о T
    #38390965
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блин, isSubclassOf жеж, извините
...
Рейтинг: 0 / 0
MyList<T> получить инфу о T
    #38390966
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallarisявляется ли он наследником от SomeBaseClass
is?

P.S. А оформить в отдельный extension метод никак?
...
Рейтинг: 0 / 0
MyList<T> получить инфу о T
    #38390971
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУP.S. А оформить в отдельный extension метод никак?

Не, в этом случае придется костыли в других местах расставлять.
...
Рейтинг: 0 / 0
MyList<T> получить инфу о T
    #38391171
Фотография Torre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris, сдается мне неправильный подход. LSP?
...
Рейтинг: 0 / 0
MyList<T> получить инфу о T
    #38391222
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не понял про LSP.

Прога в процессе работы 'решает' множество различных путей вида "СИСТЕМА:ЗАДАНИЕ:ПЕРЕМЕННЫЕ:varTest:ЗНАЧЕНИЕ". Пользователю в процессе ввода таких путей предоставляется интерфейс по типу InteliSens. Сначала решается глобальная переменная СИСТЕМА (подставляется управляющий объект проги, допустим master), затем после двоеточия решается 'ЗАДАНИЕ' (для объекта master ищется свойство ЗАДАНИЕ) через метод GetProperties() у объекта master, затем для задания ищется ПЕРЕМЕННЫЕ. Но за объектом 'переменные' лежит List<sysVar>, который конечно же ничего не знает про GetProperties(). Поэтому вариантов было два - либо на этапе решения ставить костыль

Код: c#
1.
2.
3.
4.
5.
IEnumerable ienum_ = currentCompileObject_ as IEnumerable;
if (ienum_ is not null)
{

}



либо Listу давать нужные свойства, что я считаю более правильным на данный момент
...
Рейтинг: 0 / 0
MyList<T> получить инфу о T
    #38391249
Фотография Torre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про LinkedList не будешь спрашивать?
...
Рейтинг: 0 / 0
MyList<T> получить инфу о T
    #38391263
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Torre,

ты кому?
...
Рейтинг: 0 / 0
MyList<T> получить инфу о T
    #38392272
Фотография Torre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris, в данном случае имеет место нарушение Liskov Substitution Priciple (LSV)
...
Рейтинг: 0 / 0
MyList<T> получить инфу о T
    #38392287
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Torre,

в чем нарушение, поясни.

автор поведение наследуемых классов не должно противоречить поведению, заданному базовым классом, то есть поведение наследуемых классов должно быть ожидаемым для кода, использующего переменную базового типа.


Я наследуюсь от своего класса ParameterObject, а не от листа - раз. Дочерний класс реализует функционал, расширяющий базовый - два.
...
Рейтинг: 0 / 0
MyList<T> получить инфу о T
    #38392349
Фотография Torre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisЯ наследуюсь...Не имеет значение, если ты пришел к тому что тебе нужно знать тип, значит ошибка выше по коду. Тип тебя не долен интересовать, используй полиморфизм, оперируй абстракциями.
...
Рейтинг: 0 / 0
MyList<T> получить инфу о T
    #38392377
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisВнутрях этого метода нужно понять, что это у нас за Т (является ли он наследником от SomeBaseClass).
Понять нельзя, можно только ограничить . Generic-параметр не может быть ограничен какой-то неявной логикой внутри реализации - а только теми ограничениями, которые явно продекларированы в контракте generic-типа.
...
Рейтинг: 0 / 0
MyList<T> получить инфу о T
    #38392385
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TorreНе имеет значение, если ты пришел к тому что тебе нужно знать тип, значит ошибка выше по коду. Тип тебя не долен интересовать, используй полиморфизм, оперируй абстракциями.

Согласен. Думаю.
...
Рейтинг: 0 / 0
MyList<T> получить инфу о T
    #38392410
Andrew1411
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris,

странное обсуждение. Если его не читать, исходя из первичного вопроса - ответ Type.GetGenericArguments()
...
Рейтинг: 0 / 0
MyList<T> получить инфу о T
    #38392469
Фотография Torre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PallarisСогласен. Думаю.Это нормально, называется "точка принятия решения". Если дошел до макарон, значит время наступило.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / MyList<T> получить инфу о T
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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