在我的CMS中,我有一些模块可以让我做一些巧妙的物品列表。我正在尝试通过反射将它们的子对象列表拉出来,但是我遇到了所涉及的泛型的级别。如何迭代通用反射方法?
我已经得到尽可能这种方法:
var myList = moduleObj.GetType().GetMethod("ChildItems").Invoke(moduleObj, new object[] { });
它返回一个列表。每个modulespecificobject被绑定到一个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
}
干杯不需要我已经改变它为覆盖,这是从我以前的测试继承 – 2009-12-17 11:44:30