В приложении, которое я пишу, я создаю интерфейс с помощью отражения от контекста данных. Отображение значений не является проблемой, но создание коллекций элементов и присвоение значений с помощью отражения не работает.
Вот код вопроса:
var listItemType = property.PropertyType.GetGenericArguments().First();
// See remark #1
var listType = typeof(List<>).MakeGenericType(new[] { listItemType });
var assocItems = Activator.CreateInstance(listType) as IList;
var listSelector = EditorPanel.FindControl(property.Name) as PropertyListBox;
if (listSelector != null)
{
foreach (var selectedItem in listSelector.SelectedItems)
{
assocItems.Add(selectedListItem);
}
}
// See remark #2
property.SetValue(itemToUpdate, assocItems, null);
Примечание № 1:
Я попытался изменить строку на var listType = typeof(EntityCollection<>).MakeGenericType(new[] {listItemType});
, а затем преобразовал assocItems
в IListSource. Вместо assocItems.Add()
я позвонил assocItems.GetList().Add()
, но это привело к InvalidOperationException
:
Объект не может быть добавлен в
EntityCollection или EntityReference.
Объект, который прикреплен к
ObjectContext не может быть добавлен к
EntityCollection или EntityReference
это не связано с источником
объект.
Примечание № 2:
Здесь мне нужно как-то преобразовать IList
в EntityCollection<T>
.