|
MyList<T> получить инфу о T
|
|||
---|---|---|---|
#18+
Пришлось делать обертку над List<T> для реализации одного нужного метода GetProperties(). Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Внутрях этого метода нужно понять, что это у нас за Т (является ли он наследником от SomeBaseClass). Как это лучше сделать? Кроме как Код: sql 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2013, 13:57 |
|
MyList<T> получить инфу о T
|
|||
---|---|---|---|
#18+
Блин, isSubclassOf жеж, извините ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2013, 14:02 |
|
MyList<T> получить инфу о T
|
|||
---|---|---|---|
#18+
Pallarisявляется ли он наследником от SomeBaseClass is? P.S. А оформить в отдельный extension метод никак? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2013, 14:03 |
|
MyList<T> получить инфу о T
|
|||
---|---|---|---|
#18+
МСУP.S. А оформить в отдельный extension метод никак? Не, в этом случае придется костыли в других местах расставлять. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2013, 14:05 |
|
MyList<T> получить инфу о T
|
|||
---|---|---|---|
#18+
Pallaris, сдается мне неправильный подход. LSP? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2013, 15:57 |
|
MyList<T> получить инфу о T
|
|||
---|---|---|---|
#18+
Не понял про LSP. Прога в процессе работы 'решает' множество различных путей вида "СИСТЕМА:ЗАДАНИЕ:ПЕРЕМЕННЫЕ:varTest:ЗНАЧЕНИЕ". Пользователю в процессе ввода таких путей предоставляется интерфейс по типу InteliSens. Сначала решается глобальная переменная СИСТЕМА (подставляется управляющий объект проги, допустим master), затем после двоеточия решается 'ЗАДАНИЕ' (для объекта master ищется свойство ЗАДАНИЕ) через метод GetProperties() у объекта master, затем для задания ищется ПЕРЕМЕННЫЕ. Но за объектом 'переменные' лежит List<sysVar>, который конечно же ничего не знает про GetProperties(). Поэтому вариантов было два - либо на этапе решения ставить костыль Код: c# 1. 2. 3. 4. 5.
либо Listу давать нужные свойства, что я считаю более правильным на данный момент ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2013, 16:29 |
|
MyList<T> получить инфу о T
|
|||
---|---|---|---|
#18+
Про LinkedList не будешь спрашивать? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2013, 16:39 |
|
MyList<T> получить инфу о T
|
|||
---|---|---|---|
#18+
Torre, ты кому? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.09.2013, 16:46 |
|
MyList<T> получить инфу о T
|
|||
---|---|---|---|
#18+
Pallaris, в данном случае имеет место нарушение Liskov Substitution Priciple (LSV) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 14:27 |
|
MyList<T> получить инфу о T
|
|||
---|---|---|---|
#18+
Torre, в чем нарушение, поясни. автор поведение наследуемых классов не должно противоречить поведению, заданному базовым классом, то есть поведение наследуемых классов должно быть ожидаемым для кода, использующего переменную базового типа. Я наследуюсь от своего класса ParameterObject, а не от листа - раз. Дочерний класс реализует функционал, расширяющий базовый - два. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 14:32 |
|
MyList<T> получить инфу о T
|
|||
---|---|---|---|
#18+
PallarisЯ наследуюсь...Не имеет значение, если ты пришел к тому что тебе нужно знать тип, значит ошибка выше по коду. Тип тебя не долен интересовать, используй полиморфизм, оперируй абстракциями. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 14:59 |
|
MyList<T> получить инфу о T
|
|||
---|---|---|---|
#18+
PallarisВнутрях этого метода нужно понять, что это у нас за Т (является ли он наследником от SomeBaseClass). Понять нельзя, можно только ограничить . Generic-параметр не может быть ограничен какой-то неявной логикой внутри реализации - а только теми ограничениями, которые явно продекларированы в контракте generic-типа. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 15:12 |
|
MyList<T> получить инфу о T
|
|||
---|---|---|---|
#18+
TorreНе имеет значение, если ты пришел к тому что тебе нужно знать тип, значит ошибка выше по коду. Тип тебя не долен интересовать, используй полиморфизм, оперируй абстракциями. Согласен. Думаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 15:19 |
|
MyList<T> получить инфу о T
|
|||
---|---|---|---|
#18+
Pallaris, странное обсуждение. Если его не читать, исходя из первичного вопроса - ответ Type.GetGenericArguments() ... |
|||
:
Нравится:
Не нравится:
|
|||
10.09.2013, 15:32 |
|
|
start [/forum/topic.php?fid=20&msg=38390971&tid=1404080]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
others: | 346ms |
total: | 492ms |
0 / 0 |