Witam serdecznie,
skonfigurowałem Ninject, który poprawnie działa w projekcie Service, gdzie jest testowy controller, ale niepoprawnie w projekcie WebGui, gdzie w controlerze obiekty interface nie wypełniają się. Na początku miałem problem, że controller nie ma constructora bezparametrowego, rozwiązanie znalałem, a jest nim :
public AccountController() : this(DependencyResolver.Current.GetService<IUserService>(),
DependencyResolver.Current.GetService<IMainSpeciesService>()) {
}
Teraz constructor z parametrami w controllerze odpala się jednak nie wypełnia obiektów interface. Kurza stopa nie wiem co jest nie tak i jak to powinno być odpowiednio skonfigurowane.
Projekt wygląda tak:
http://prnt.sc/ak78wn
KOD..
Services ma referencje do Ninjecta, plik NinjectCommon wygląda następująco:
public static class NinjectWebCommon
{
private static readonly Bootstrapper bootstrapper = new Bootstrapper();
/// <summary>
/// Starts the application
/// </summary>
public static void Start()
{
DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));
DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));
bootstrapper.Initialize(CreateKernel);
}
/// <summary>
/// Stops the application.
/// </summary>
public static void Stop()
{
bootstrapper.ShutDown();
}
/// <summary>
/// Creates the kernel that will manage your application.
/// </summary>
/// <returns>The created kernel.</returns>
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
try
{
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel);
return kernel;
}
catch
{
kernel.Dispose();
throw;
}
}
/// <summary>
/// Load your modules or register your services here!
/// </summary>
/// <param name="kernel">The kernel.</param>
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<IAlbumRepository>().To<AlbumRepository>();
kernel.Bind<ICommentRepository>().To<CommentRepository>();
kernel.Bind<IGroupRepository>().To<GroupRepository>();
kernel.Bind<IGroupMemberRepository>().To<GroupMemberRepository>();
kernel.Bind<IImageRepository>().To<ImageRepository>();
kernel.Bind<ILikeRepository>().To<LikeRepository>();
kernel.Bind<IMovieRepository>().To<MovieRepository>();
kernel.Bind<IPostRepository>().To<PostRepository>();
kernel.Bind<IUnlikeRepository>().To<UnlikeRepository>();
kernel.Bind<IUserRepository>().To<UserRepository>();
kernel.Bind<IUserDataRepository>().To<UserDataRepository>();
kernel.Bind<IUserFriendRepository>().To<UserFriendRepository>();
kernel.Bind<IMainSpeciesRepository>().To<MainSpeciesRepository>();
kernel.Bind<IAlbumService>().To<AlbumServiceImpl>();
kernel.Bind<ICommentService>().To<CommentServiceImpl>();
kernel.Bind<IGroupService>().To<GroupServiceImpl>();
kernel.Bind<IGroupMemberService>().To<GroupMemberServiceImpl>();
kernel.Bind<IImageService>().To<ImageServiceImpl>();
kernel.Bind<ILikeService>().To<LikeServiceImpl>();
kernel.Bind<IMovieService>().To<MovieServiceImpl>();
kernel.Bind<IPostService>().To<PostServiceImpl>();
kernel.Bind<IUnlikeService>().To<UnlikeServiceImpl>();
kernel.Bind<IUserDataService>().To<UserDataServiceImpl>();
kernel.Bind<IUserService>().To<UserServiceImpl>();
kernel.Bind<IUserFriendService>().To<UserFriendServiceImpl>();
kernel.Bind<IMainSpeciesService>().To<MainSpeciesServiceImpl>();
}
}
Global.asax
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
GlobalConfiguration.Configure(WebApiConfig.Register);
AutoMapperServiceConfiguration.Configure();
}
}
Controller w MyPuppy :
public class AccountController : Controller
{
readonly IUserService _userService;
readonly IMainSpeciesService _mainSpecieService;
public AccountController() : this(DependencyResolver.Current.GetService<IUserService>(),
DependencyResolver.Current.GetService<IMainSpeciesService>()) {
}
public AccountController(IUserService userService, IMainSpeciesService mainSpecieService)
{
_userService = userService;
_mainSpecieService = mainSpecieService;
}
Jeśli jest potrzeba codu innych plików dajcie znaka.
Proszę o pomoc.
Pozdrawiam