【发布时间】:2014-10-31 20:02:24
【问题描述】:
好的,所以我有一个包含多个List 类型属性的类。
有些列表只是简单的类型,如string、int 等。
但有些是自定义类型的列表,例如 Feature、Trailer、Artwork 等。
public class Movie : IMedia
{
public List<Feature> Features;
public List<Artwork> Artwork;
public List<string> Genres;
}
所有自定义类型(以及 Movie 类本身)都实现了接口 IMedia。
使用反射我想遍历 Movie 属性并对 List<IMedia> 类型的属性做一些事情 - 但问题就在这里;因为显然我不能只使用is List<IMedia>,同时还想将属性指定为特定类型,例如List<Feature>。
你们建议我如何识别这些类型?
扩展List<T> 本身还是完全不同的东西?
【问题讨论】:
-
你应该展示你的代码。没有您的代码,我们不可能知道出了什么问题。
-
您要识别列表的类型还是列表中元素的类型?
-
听起来像是扩展类的教科书用例,出于好奇,尽管
is List<T>或.GetType() == TypeOf(List<T>)应该可以工作,除非您明确重铸该类,并且如果这些类如此熟悉且仅在name 为什么区分它们的对象可以作为对象存储在类中? -
我不建议您在简单的 BL 案例中使用反射。这似乎是一种过度概括。 IE。实现在某些条件下返回 IList
的公共方法。