2013-02-01 68 views
4

我是StructureMap的新手,我一直試圖修復這個錯誤一段時間。 只是不知道如何解決它,我在哪裏做錯了。 我甚至設置了一個模板MVC4網站,沒有任何內容,仍然得到這個錯誤。結構圖沒有爲此對象定義的無參數構造函數

有人可以幫我嗎?

public static class IoC { 
    public static IContainer Initialize() { 
     ObjectFactory.Initialize(x => 
        { 
         x.Scan(scan => 
           { 
            scan.TheCallingAssembly(); 
            scan.WithDefaultConventions(); 
           }); 

         x.For<IDbSession>().Use(() => MvcApplication.DbSession); 
         x.For<IDbService>().Use<DbService>(); 
        }); 
     return ObjectFactory.Container; 
    } 
} 

public class HomeController : Controller 
{ 
    protected readonly IDbService _dbService; 

    public HomeController(IDbService dbService) 
    { 
     _dbService = dbService; 
    } 

    ... 
} 

public interface IDbSession : IDisposable 
{ 
    void Commit(); 
    void Rollback(); 
} 

public interface IDbService 
{ 
    StudentsService Students { get; } 
    CoursesService Courses { get; } 
    ... 
} 

public class DbService : IDbService 
{ 
    private readonly IDbSession _dbSession;   

    public StudentsService Students { get; } 
    public CoursesService Courses { get; } 
    ... 

    public DbService(IDbSession dbSession) 
    { 
     _dbSession = dbSession; 
    } 
} 

public class MvcApplication : System.Web.HttpApplication 
    { 
     private static readonly string _connectionString; 
     private static readonly IDbSessionFactory _dbSessionFactory; 

     public static IDbSession DbSession 
     { 
      get { return (IDbSession)HttpContext.Current.Items["Current.DbSession"]; } 
      private set { HttpContext.Current.Items["Current.DbSession"] = value; } 
     } 

     static MvcApplication() 
     { 
      _connectionString= ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 
      _dbSessionFactory = new DbSessionFactory(_connectionString); 
     } 

     protected MvcApplication() 
     { 
      BeginRequest += delegate 
      { 
       DbSession = _dbSessionFactory.Create(); 
      }; 

      EndRequest += delegate 
      { 
       if (DbSession != null) 
        DbSession.Dispose(); 
      }; 
     } 

     protected void Application_Start() 
     { 
      AreaRegistration.RegisterAllAreas(); 

      WebApiConfig.Register(GlobalConfiguration.Configuration); 
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
      RouteConfig.RegisterRoutes(RouteTable.Routes); 
      BundleConfig.RegisterBundles(BundleTable.Bundles); 
      AuthConfig.RegisterAuth(); 
     } 
    } 

回答

相關問題