I am doing a project and they are separated in layers, I can call DDD. However I have the following error:
No parameterless constructor has been defined for this object.
I'm using Ioc, here's how I'm doing:
public class NinjectWebCommon
{
private static readonly Bootstrapper bootstrapper = new Bootstrapper();
public static void Start()
{
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
bootstrapper.Initialize(CreateKernel);
}
public static void Stop()
{
bootstrapper.ShutDown();
}
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
try
{
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
ServiceLocator.SetLocatorProvider(() => new NinjectServiceLocator(kernel));
RegisterServices(kernel);
return kernel;
}
catch
{
kernel.Dispose();
throw;
}
}
private static void RegisterServices(IKernel kernel)
{
kernel.Bind(typeof(IAppServiceBase<>)).To(typeof(AppServiceBase<>));
kernel.Bind<IConhecimentoAppService>().To<ConhecimentoAppService>();
kernel.Bind<IDadosBancariosAppService>().To<DadosBancariosAppService>();
kernel.Bind<IDisponibilidadeAppService>().To<DisponibilidadeAppService>();
kernel.Bind<IHorarioAppService>().To<HorarioAppService>();
kernel.Bind<IPessoaAppService>().To<PessoaAppService>();
kernel.Bind<IPessoaConhecimentoAppService>().To<PessoaConhecimentoAppService>();
kernel.Bind<IPessoaDisponibilidadeAppService>().To<PessoaDisponibilidadeAppService>();
kernel.Bind<IPessoaHorarioAppService>().To<PessoaHorarioAppService>();
kernel.Bind(typeof(IServiceBase<>)).To(typeof(ServiceBase<>));
kernel.Bind<IConhecimentoService>().To<ConhecimentoService>();
kernel.Bind<IDadosBancariosService>().To<DadosBancariosService>();
kernel.Bind<IDisponibilidadeService>().To<DisponibilidadeService>();
kernel.Bind<IHorarioService>().To<HorarioService>();
kernel.Bind<IPessoaService>().To<PessoaService>();
kernel.Bind<IPessoaConhecimentoService>().To<PessoaConhecimentoService>();
kernel.Bind<IPessoaDisponibilidadeService>().To<PessoaDisponibilidadeService>();
kernel.Bind<IPessoaHorarioService>().To<PessoaHorarioService>();
kernel.Bind(typeof(IRepositoryBase<>)).To(typeof(RespositoryBase<>));
kernel.Bind<IConhecimentoRepository>().To<ConhecimentoRepository>();
kernel.Bind<IDadosBancariosRepository>().To<DadosBancariosRepository>();
kernel.Bind<IDisponibilidadeRepository>().To<DisponibilidadeRepository>();
kernel.Bind<IHorarioRepository>().To<HorarioRepository>();
kernel.Bind<IPessoaRepository>().To<PessoaRepository>();
kernel.Bind<IPessoaConhecimentoRepository>().To<PessoaConhecimentoRepository>();
kernel.Bind<IPessoaDisponibilidadeRepository>().To<PessoaDisponibilidadeRepository>();
kernel.Bind<IPessoaHorarioRepository>().To<PessoaHorarioRepository>();
}
}
Controller is done like this:
public class PessoaController : Controller
{
private readonly IPessoaAppService _pessoaApp;
private readonly IConhecimentoAppService _conhecimentoApp;
public PessoaController(IPessoaAppService pessoaApp, IConhecimentoAppService conhecimentoApp)
{
_pessoaApp = pessoaApp;
_conhecimentoApp = conhecimentoApp;
}
// GET Pessoa/GetPessoa
public JsonResult GetPessoa()
{
try
{
var pessoaViewModel = Mapper.Map<IEnumerable<Pessoa>, IEnumerable<PessoaViewModel>>(_pessoaApp.GetAll());
List<PessoaViewModel> pessoas = pessoaViewModel.ToList();
return Json(pessoas, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
throw;
}
}
}