我正在使用 MVC3、C#、Razor、.NET4、EF5、SQL Server 2008。
我需要找出域对象上的属性类型,特别是它是 ICollection 即导航属性还是简单的 POCO 类型,即 int、string 等。
基本上我从视图映射到域对象,我需要排除导航属性(ICollection)。我正在使用值注入器,我可以编写一个自定义注入器来忽略 ICollection。
我相信有“TypeOf”功能。
所以我的伪逻辑将是:
Match if not(typeOf(ICollection))
非常感谢。
编辑:
尝试了第一个解决方案,但无法使其正常工作。下面的示例代码。全部返回真。我希望 isCollection1 和 2 为假,而 3 和 4 为真。
想法?
bool isCollection2 = stdorg.Id is System.Collections.IEnumerable;
bool isCollection3 = stdorg.StdLibraryItems is System.Collections.IEnumerable;
编辑2:
这对我有用:
bool IsCollection = (stdorg.StdLibraryItems.GetType().Name == "EntityCollection`1")
Value Injector 实际上要求我使用:
bool IsCollection = (stdorg.StdLibraryItems.GetType().Name == "ICollection`1")
这是一种享受。对于那些感兴趣的人,Value Injector 有一个匹配例程,并将此条件放入确定匹配是否返回 true,如果返回 true,则将 Target 属性值设置为 Source Property Value 的值。