ViewDataFactory和强类型母版页

我试图让我的强类型母版页在我的ASP MVC 2.0应用程序中工作。 我在这两个post的帮助下走得很远:

将数据传递到ASP.NET MVC中的母版页

强类型的ASP.Net MVC母版页

问题是,我不知道如何使ViewDataFactory代码工作,这是我的代码:

BaseController.cs

public class BaseController : Controller { private IPageRepository _repPage; public BaseController(IPageRepository repPage) { _repPage = repPage; } protected T CreateViewData() where T : MasterViewData, new() { IViewDataFactory factory = new ViewDataFactory(); IEnumerable pages = _repPage.GetAllPages(); return factory.Create(pages); } } 

HomeController.cs

 public class HomeController : BaseController { public ActionResult Index() { HomeViewData viewData = CreateViewData(); viewData.Name = "Test"; return View("Index", viewData); } public ActionResult About() { return View(); } } 

ViewDataFactory.cs

 public interface IViewDataFactory { T Create(IEnumerable pages) where T : MasterViewData, new() } public class ViewDataFactory : IViewDataFactory { public ViewDataFactory() { } } 

HomeViewData.cs

 public class HomeViewData : MasterViewData { public string Name { get; set; } } 

MasterViewData

 public class MasterViewData { public IEnumerable Pages { get; set; } } 

当我构建解决方案时,我得到了以下构建错误:

 "; expected" in ViewDataFactory.cs 

哪个指向代码段:

 T Create(IEnumerable pages) where T : MasterViewData, new() 

我想我错过了必不可少的东西,我对此很新,任何帮助都将不胜感激!

为什么不在该行的末尾添加分号? 🙂

抽象方法(以及接口方法)使用分号代替正文。

由于Aviad P.的建议和一些反复试验,我终于得到了它的工作。

这就是我的IViewDataFactory最终看起来像:

 public interface IViewDataFactory { T Create(IEnumerable pages) where T : MasterViewData, new(); } public class ViewDataFactory : IViewDataFactory { public T Create(IEnumerable pages) where T : MasterViewData, new() { T t = new T(); t.Pages = pages; return t; } }