namespace Mvc3.Web.Framework
{
public abstract class BaseViewPage<TModel> : WebViewPage<TModel> where TModel : class
{
//默认必须有无参构造函数
public BaseViewPage()
{
CurrentUser = new UserService().CurrentUser;
}
//我使用Autofac了已经注册了所有的包含"Service"的类型,既然注册过了,为什么还要去 new 一次呢,?
//因此有下面的想法,通过依赖注入来更改默认的行为,从而调用下面的构造函数,但是不知道怎么做。。。
//public BaseViewPage(IUserService userService)
//{
// CurrentUser = userService.CurrentUser;
//}
public DUser CurrentUser
{
get;
private set;
}
public override void Execute()
{
}
}
public class BaseViewPage : BaseViewPage<object>
{
}
}
Global文件中deAutofac部分代码如下:
protected IContainer RegisterDependencies()
{
var builder = new ContainerBuilder();
builder.RegisterControllers(typeof(MvcApplication).Assembly);
builder.RegisterModelBinders(Assembly.GetExecutingAssembly());
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
.Where(t => t.Name.Contains("Service"))
.AsImplementedInterfaces();
return builder.Build();
}
protected void Application_Start()
{
var container = RegisterDependencies();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
ViewEngines.Engines.Insert(0, new WebEngine(container.Resolve<IThemeService>()));
AreaRegistration.RegisterAllAreas();
RegisterGlobalFilters(GlobalFilters.Filters);
RegisterRoutes(RouteTable.Routes);
}
为了实现我第一部分代码中描述的那样,该如何实现呢?
问题不能编辑么?去掉abstract关键字...
还有ConfOrm处理一些特殊的表,比如User、Order表,怎么处理,我没办法了直接把User表换成DUser了。。。。
你这是抽象类,不能实例化的。