В моей CMS у меня есть множество модулей, которые позволяют мне делать некоторые умные вещи со списком предметов. Я пытаюсь использовать их, чтобы вытащить список своих дочерних объектов с помощью рефлексии, но я застреваю на уровне общего обобщения.
Я дошел до этого метода:
var myList = moduleObj.GetType().GetMethod("ChildItems").Invoke(moduleObj, new object[] { });
, который возвращает список. Каждый объект-специфический объект связан с интерфейсом IItemListable, в котором есть методы, к которым я пытаюсь получить доступ.
Я не уверен, как я могу привести или перебрать объект myList, поскольку набор объектов IItemListable обращается к требуемым методам.
Спасибо
Несколько классов:
public interface IItemListable
{
IQueryable GetQueryableList();
string GetIDAsString();
IItemListable GetItemFromUrl(string url, List<IItemListable> additionalItems);
bool IsNewItem();
IItemListable CreateItem<T>(ItemListerControl<T> parentList) where T : class, IItemListable;
IItemListable LoadItem(string id);
IItemListable SaveItem();
RssToolkit.Rss.RssItem ToRssItem();
void DeleteItem();
string ItemUrl();
}
public interface IItemListModule<T> where T: IItemListable
{
List<T> ChildItems();
}
public class ArticlesModule : ItemListModuleBase<Article>, IItemListModule<Article>
{
#region IItemListModule<Article> Members
public new List<Article> ChildItems()
{
return base.ChildItems().Cast<Article>().Where(a => a.IsLive).ToList();
}
#endregion
}