Какие типы данных вы пытаетесь здесь преобразовать? Вероятно, вам следует выбирать данные на основе запроса, это похоже на то, что вы пытаетесь сохранить всю базу данных в одном случайно предоставленном типе. Возможно, вы пытаетесь сохранить текст в двойном формате ...
Если вы просто хотите сохранить все данные из базы данных, используйте DataSet или DataTable.
И что вы здесь делаете?
property.SetValue( property.Name,(PropertyInfo)sqlReader[property.Name],null);
Похоже, вы пытаетесь изменить имена свойств запрошенного типа ...
Прежде чем назначать свойства типу, его нужно инстанцировать:
T instance = Activator.CreateInstance<T>();
foreach (PropertyInfo property in type.GetProperties())
{
property.SetValue(instance, sqlReader[property.Name], null);
}
typeList.Add(instance);
Также оберните ваш SqlCommand
в блок using
, чтобы правильно его утилизировать. Еще одно замечание: вам не нужно .Close()
ваше соединение в блоке finally, это будет автоматически сделано методом Dispose
, поскольку вы уже обернули соединение в блок using
.