Ответ 1
Вы не можете бросать ковариантно непосредственно в List;
Или:
List<Product> products = (List<Product>)Source.DataSource;
или
List<Object> products = ((List<Product>)Source.DataSource).Cast<object>().ToList();
У меня есть следующий метод загрузки продуктов в DataGridView
private void LoadProducts(List<Product> products)
{
Source.DataSource = products; // Source is BindingSource
ProductsDataGrid.DataSource = Source;
}
И теперь я пытаюсь вернуть меня, чтобы сохранить их, как показано ниже.
private void SaveAll()
{
Repository repository = Repository.Instance;
List<object> products = (List<object>)Source.DataSource;
Console.WriteLine("Este es el número {0}", products.Count);
repository.SaveAll<Product>(products);
notificacionLbl.Visible = false;
}
Но я получаю InvalidCastException
в этой строке:
List<object> products = (List<object>)Source.DataSource;
Итак, как я могу передать DataSource в List?
Вы не можете бросать ковариантно непосредственно в List;
Или:
List<Product> products = (List<Product>)Source.DataSource;
или
List<Object> products = ((List<Product>)Source.DataSource).Cast<object>().ToList();
Итак, как я могу передать DataSource в List?
У вас есть много вариантов
var products = (List<Product>)Source.DataSource; // products if of type List<Product>
или
List<Object> products = ((IEnumerable)Source.DataSource).Cast<object>().ToList();
или
List<Object> products = ((IEnumerable)Source.DataSource).OfType<object>().ToList();
или
List<Object> products = new List<Object>();
((IEnumerable)Source.DataSource).AsEnumerable().ToList().ForEach( x => products.Add( (object)x));
Ваш список ist типа List<Product>
, который отличается от List<object>
. Попробуйте применить к List<Product>
Сопряжение ответов Это мое решение:
private void SaveAll()
{
Repository repository = Repository.Instance;
List<Product> products = (List<Product>)Source.DataSource;
IEnumerable<object> objects = products.Cast<object>();
repository.SaveAll<Product>(objects.ToList<object>());
notificacionLbl.Visible = false;
}
Я принимаю конструктивную критику.