Список с в Расширении Таблицы данных Списка с Информацией о собственности

Я преобразовываю из Таблицы данных, чтобы Перечислить при помощи Расширений Таблицы данных. Здесь, когда я пытаюсь добавить ряд к нормальной собственности Списка то, что это хорошо работало. Но когда я использую список с в списке, я сталкиваюсь с проблемой. я не в состоянии установить значение в собственности.

 private static T CreateItemFromRow(DataRow row, IList properties) where T : new()
    {
        T item = new T();
        foreach (var property in properties)
        {

            if (property.Name.Equals("ProductSpec"))
            {
                Type t = property.GetType();
               // i am getting error when i am trying to do this

                property.SetValue(item, ProductSpecIteration(property, row), null);
            }

            if (row.Table.Columns.Contains(property.Name))
            {                   
                property.SetValue(item, row[property.Name] == DBNull.Value?"":row[property.Name], null);
            }

        }
        return item;
    }


 private static ProductSpec ProductSpecIteration(PropertyInfo property, DataRow row)
    {            
        ProductSpec lstProductSpec = new ProductSpec();
        lstProductSpec.product_specs_id = Convert.ToInt64(row["product_specs_id"]);            
        return lstProductSpec;
    }

Я не в состоянии в общем сделать это. Но даже я не в состоянии добавить это в этом расширения? Мог любой помогать мне из этого ситуации

0
nl ja de
@Wolf, Который не должен иметь место, потому что гребут ["колонка"] , должен возвратиться объект , который конвертируем, чтобы долго . @Bhuvan, вы пытались отладить код, где исключение происходит?
добавлено автор SWeko, источник
можно ли отправить некоторые детали об ошибке?
добавлено автор GolfWolf, источник
и вы получаете его, когда вы действительно <кодируете> Новообращенного. ToInt64 (ряд ["product_specs_id"]); ?
добавлено автор GolfWolf, источник
Хорошо тогда, какова точная линия, где вы получаете ошибку? Это когда you' ре, делающее, собственность. SetValue (...) для свойств кроме id? Можно ли отладить и видеть ли, какая собственность вы получаете его и какова стоимость?
добавлено автор GolfWolf, источник
первая вещь, я не в состоянии установить Список, который является собственностью INA, таким образом, я вручную hardcoded и назначил ценности в списке, который является metyhod ProductSpecIteration. Теперь, когда я пытаюсь установить фактический Список в собственность, я получаю ошибку точно в этой линии "собственность. SetValue (пункт, ProductSpecIteration (собственность, ряд), пустой указатель);}". В моей отладке после завершения ProductSpecIteration я сталкиваюсь с этой ошибкой
добавлено автор Bhuvan, источник
ошибка - "Объект, должен осуществить IConvertible"
добавлено автор Bhuvan, источник

2 ответы

U r пытающийся преобразовать объект, возвращенный из DataRow. Пункт [последовательность] собственность, которая не может быть установлена непосредственно.

string value = row[property.Name] == DBNull.Value?"":row[property.Name].ToString();
property.SetValue(item, Convert.ChangeType(value, property.PropertyType), null);

для ProductSpec можно использовать,

  ProductSpec spec = ProductSpecIteration(property, row);
  property.SetValue(item, Convert.ChangeType(spec , property.PropertyType), null);

Однако это будет хорошо работать, не изменяя тип, поскольку тип - то же самое как имущественный тип

Hope this helps. You can read more about it here You can also read more about IConvertible Interface here

IConvertible interface helps in returning a required value, since object does not implement IConvertible and hence cannot get the value in required format of the property type.

1
добавлено
призовите "Добавить" метод на список, именно так u добавляют объект к списку
добавлено автор Akanksha Gaur, источник
Это поможет в назначении целого списка. Чтобы добавить отдельные элементы, u должен призвать "Добавить" метод на объект u полученный от собственности
добавлено автор Akanksha Gaur, источник
В которой линии вы получаете ошибку?
добавлено автор Akanksha Gaur, источник
Кроме того, вы использовали ToString() на пункте, восстановленном от ряда данных? как этот lstProductSpec.product_specs_id = Новообращенный. ToInt64 (ряд ["product_specs_id"].ToString ());
добавлено автор Akanksha Gaur, источник
используйте собственность. PropertyType, который дает u тип собственности
добавлено автор Akanksha Gaur, источник
u r использование неправильного типа, это должна быть собственность. Собственность PropertyType. GetType() даст вам typeof (PropertyInfo)
добавлено автор Akanksha Gaur, источник
Привет akanksha благодарит..., я понял то, что является глупостью, которую я делаю...
добавлено автор Bhuvan, источник
Но мой список находится в имущественной переменной типа propertyinfo.. как я добавляю свой lstproductspec к моей propertyinfo переменной типа
добавлено автор Bhuvan, источник
PropertyType - retreving мой genericList ProductSpec.. но когда я пробую, я получаю ту же самую ошибку
добавлено автор Bhuvan, источник
Привет.. Поскольку я использую Список с в списке, я получаю свой тип как "Система. Отражение. RuntimePropertyInfo"
добавлено автор Bhuvan, источник
Привет, неудача:) Все еще я - receviing та же самая ошибка
добавлено автор Bhuvan, источник
Привет akanksha... прощают за задержку...
добавлено автор Bhuvan, источник
я не должен использовать это, потому что я определил свой product_specs_id как интервал в моей productspec модели
добавлено автор Bhuvan, источник
Но тем не менее я получаю ошибку, поскольку объект должен осуществить iConvertible... делают я должен осуществить его для всех методов
добавлено автор Bhuvan, источник
В Новообращенном. ChangeType (стоимость, собственность. PropertyType).. Если стоимость - Список, будет это работать?
добавлено автор Bhuvan, источник

Я не знаю то, что вы точно хотите, но эта связь может быть помощью вы

Связь 1

0
добавлено
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot