IList类型转换问题

时间:2010-11-05 04:41:20

标签: c# casting

我从一本书中得到了这行代码。我不明白有人会怎么知道controller.List().ViewData.Model可以被称为IList?

var people = controller.List().ViewData.Model as IList<Person>;

2 个答案:

答案 0 :(得分:1)

您必须了解对象模型,在大多数情况下,您熟悉所使用的框架,IDE提供了许多有用的工具来协助对象调查。

答案 1 :(得分:1)

您所拥有的是对ASP.NET MVC控制器的调用,而不是使用它来呈现视图,而是直接访问ViewData。

通常在ASP.NET MVC中,您将为视图创建一个类型视图,该视图将从System.Web.Mvc.ViewPage<T>继承,在这种情况下,它将是System.Web.Mvc.ViewPage<IList<Person>>。创建此类型视图后,您会在视图中知道ViewData.Model属于IList<Person>类型。

您发布的呼叫通常用于对控制器进行单元测试。在这种情况下,您直接调用控制器方法并返回其中包含数据的ViewResult。在编写单元测试时,您知道ViewData.Model类型为IList<Person>',因为这是合同 - 这是单元测试的用途,用于验证控制器是否生成了正确类型的模型和有正确的数据。