powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Получить все свойства ICollection<S> объекта.
12 сообщений из 12, страница 1 из 1
Получить все свойства ICollection<S> объекта.
    #38774536
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
привет
Есть объект класса T. Как получить свойство ICollection<Ы> объекта и пройти циклом по его элементам если неизвестен его генерик-тип S? В гугле нашёл следующее:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
            


        foreach (PropertyInfo property in obj.GetType().GetProperties())
            {
                if (typeof(IEnumerable<T>).IsAssignableFrom(property.PropertyType))
                {
                    //какие-то действия
                }

            }



obj - экземпляр некоего класса у которого есть свойство ICollection<Type1>. Но в if для этого свойства возвращается false. Как сделать чтобы свойство ICollecton<Type1> всё же нашлось?
(класс autogenerated code так что свойство может быть только ICollection<Type1>)
...
Рейтинг: 0 / 0
Получить все свойства ICollection<S> объекта.
    #38774545
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Опечатка. Как получить свойство ICollection<Type1> объекта и пройти циклом по его элементам если неизвестен его генерик-тип Type1? Собственно, генерик-тип добыить можно:

Код: c#
1.
property.PropertyType.GetGenericArguments().FirstOrDefault();



а получить само значение свойства ICollecton<Type1> не получается.
...
Рейтинг: 0 / 0
Получить все свойства ICollection<S> объекта.
    #38774551
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortis,
исходите из предположения что IEnumerable а не IEnumerable<T> ну будет упаковка значимых, так сказать плата за не х..я не знаю..
...
Рейтинг: 0 / 0
Получить все свойства ICollection<S> объекта.
    #38774563
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну допустим так в блок if заходит.

Код: c#
1.
2.
3.
4.
5.
6.
               
              if (typeof (IEnumerable).IsAssignableFrom(property.PropertyType))
                {
                    Type genericType = property.PropertyType.GetGenericArguments()[0]; //получаем генерик-тип
                    object propertyValue = property.GetValue(entity, null);  //значение свойства-коллекции
                }



Что-то затруднился дальше как по коллекции propertyValue пройти чтобы получить каждый её элемент генерик-типа?
...
Рейтинг: 0 / 0
Получить все свойства ICollection<S> объекта.
    #38774566
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
опять же в гугле пример

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
                
                Type GenericType = property.PropertyType.GetGenericArguments()[0];

                object v = property.GetValue(entity, null);

                foreach (object ch in (IEnumerable) v)
                {
                      var item = (ICollection<GenericType >)
                }



но студия такого не скомпилит, ругется на
Код: c#
1.
var item = (ICollection<GenericType>);

что не опознан GenericType.
...
Рейтинг: 0 / 0
Получить все свойства ICollection<S> объекта.
    #38774569
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortisопять же в гугле пример

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
                
                Type GenericType = property.PropertyType.GetGenericArguments()[0];

                object v = property.GetValue(entity, null);

                foreach (object ch in (IEnumerable) v)
                {
                      var item = (ICollection<GenericType >)
                }



но студия такого не скомпилит, ругется на
Код: c#
1.
var item = (ICollection<GenericType>);

что не опознан GenericType.

гыгы Вы откуда такой ? var item = (ICollection<GenericType>);- это что за изврат
давайте по порядку у вас заходит?
...
Рейтинг: 0 / 0
Получить все свойства ICollection<S> объекта.
    #38774574
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Заходит
...
Рейтинг: 0 / 0
Получить все свойства ICollection<S> объекта.
    #38774576
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortisЗаходит
заходит хорошо, выходит плохо...
ну дак встаньте отладчиком просмотре что видно?
Код: c#
1.
2.
3.
4.
5.
                  foreach (object ch in (IEnumerable) v)
                {
                      var item = ch// в этом месте
                     // или WriteLine(item); 
                }


зы и что это значит < S,T,Type1,Ы>?
...
Рейтинг: 0 / 0
Получить все свойства ICollection<S> объекта.
    #38774579
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я же написал в самом начале - опечатка.
...
Рейтинг: 0 / 0
Получить все свойства ICollection<S> объекта.
    #38774580
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortisЯ же написал в самом начале - опечатка.
я подумал что Вы имели ввиду свой пост в целом...
...
Рейтинг: 0 / 0
Получить все свойства ICollection<S> объекта.
    #38774581
rigorMortis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну, так и пролжайте думать
...
Рейтинг: 0 / 0
Получить все свойства ICollection<S> объекта.
    #38774583
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rigorMortis,
Я уже так не думаю...
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Получить все свойства ICollection<S> объекта.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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