Лес говорит, что у меня есть класс:
class SomeObject
{
public string Name{get;set;}
public string SomeProperty {get; set;}
}
У меня также есть список объектов SomeObjects:
List<SomeObject> list1 = new List<SomeObject>();
list1.Add(new SomeObject{ Name="Jhon", SomeProperty="baa bla bla"});
list1.Add(new SomeObject{ Name="Albert", SomeProperty="some description"});
list1.Add(new SomeObject{ Name="Tom", SomeProperty="some text"});
Я хочу создать класс, в котором я могу заполнить ListView, передавая список, который я хочу заполнить, а также список. поэтому мой конструктор этого класса выглядит так:
class MyListView
{
//Constructor
public MyListView(System.Windows.Controls.ListView listView, object list)
{
Lista = ((IEnumerable)list).Cast<object>().ToList(); // Cast the object list to List<objects>
var properties = Lista[0].GetType().GetProperties();
foreach (var prop in properties)
{
// prop = Name then SomeProperty in this case
// create new column in listView
// etc
}
}
}
Единственная проблема заключается в том, что если передать список без объектов, я не знаю, как я могу получить свойства SomeObject, потому что мой конструктор предполагает, что список не пуст, поэтому, получая первый объект, он может увидеть свойства.
Итак, мой вопрос, как я могу получить свойства Name и SomeProperty, посмотрев на список. Я хочу сделать что-то вроде:
public MyListView(System.Windows.Controls.ListView listView, object list)
{
Lista = ((IEnumerable)list).Cast<object>().ToList(); // Cast the object list to List<objects>
properties = Lista.GetType().GetProperty("some property that refers to list items").GetType().GetProperties();
Вместо того, чтобы пытаться получить их от первого объекта. Я знаю, что мог бы изменить конструктор и потребовать объект, из которого построен список, и получить свойства от этих объектов, но было бы неплохо, если бы мне не пришлось передавать этот дополнительный параметр.