我目前正在使用C#在ASP.NET中工作并遇到一些问题。
我有以下课程:
public class AvailableTicket
{
public IEnumerable<Jazz> jazz;
public IEnumerable<Dining> dining;
public IEnumerable<Walking> walking;
public IEnumerable<Talking> talking;
public IEnumerable<Ticket> tickets;
public int amountToOrder;
public string Option;
}
在视图中,我想循环遍历类中的IEnumerables。 我已经查找了GetType()。GetProperties,但我被困在这里。
我在foreach中使用什么来只选择对象中的IEnumerable?
感谢您的时间。
答案 0 :(得分:1)
我自己找到了解决方案。
我必须使用
Model.GetType().GetProperties().OfType<IEnumerable<object>>()
为了过滤掉类中的所有IEnumerable。
答案 1 :(得分:1)
您需要filter the properties by their PropertyType
并检查它是否是实现类型定义为IEnumerable<>
的接口的类型。以下是如何使用LINQ:
Model.GetType().GetProperties().Where( p =>
p.PropertyType.GetInterfaces().Any( i =>
i.IsGenericType &&
i.GetGenericTypeDefinition() == typeof(IEnumerable<>)
)
);