Unity constructor injection with MVVM not working as expected












0















I have one scenario where i want to create object of my injection when i do login but i am bit unaware about cycle my service module where my dependency injection mapping defined is called after my LoginViewModel calls.
due to this my _Service object is initially null because ConfigureModuleCatalog calls after my LoginViewModel calls.
How can i correct this..actually i don't want to use new Service() if my object is null.
I am using below code for this



LoginViewModel



private readonly IService _Service;
public LoginViewModel(IService Service=null) //Also i want to make this innjection optional so i set it to NULL
{
_Service = Service;
}

private void MethodWhereIWantToUseService()
{
//_service is coming NULL because configuration or mapping of injection calls after this
_Service.MYMethod();
}


ServiceModule



public class ServicesModule : IModule
{
public void Initialize()
{
var container = ServiceLocator.Current.GetInstance<IUnityContainer>();
container.RegisterType<IService, Service>();

}
}


Bootstrapper i.e. where my module is configured



public class Bootstrapper : UnityBootstrapper
{
protected override void ConfigureModuleCatalog()
{
base.ConfigureModuleCatalog();
ModuleCatalog catalog = (ModuleCatalog)this.ModuleCatalog;
catalog.AddModule(typeof(ServicesModule));
}
}









share|improve this question

























  • Where do you call your bootstrapper?

    – grek40
    Nov 16 '18 at 6:35











  • @grek40 when i do login i call bootstraper.run i.e. in App.xaml.cs "onstartup"

    – mswebappdev
    Nov 16 '18 at 6:43











  • How do you create your LoginViewModel?

    – grek40
    Nov 16 '18 at 7:11
















0















I have one scenario where i want to create object of my injection when i do login but i am bit unaware about cycle my service module where my dependency injection mapping defined is called after my LoginViewModel calls.
due to this my _Service object is initially null because ConfigureModuleCatalog calls after my LoginViewModel calls.
How can i correct this..actually i don't want to use new Service() if my object is null.
I am using below code for this



LoginViewModel



private readonly IService _Service;
public LoginViewModel(IService Service=null) //Also i want to make this innjection optional so i set it to NULL
{
_Service = Service;
}

private void MethodWhereIWantToUseService()
{
//_service is coming NULL because configuration or mapping of injection calls after this
_Service.MYMethod();
}


ServiceModule



public class ServicesModule : IModule
{
public void Initialize()
{
var container = ServiceLocator.Current.GetInstance<IUnityContainer>();
container.RegisterType<IService, Service>();

}
}


Bootstrapper i.e. where my module is configured



public class Bootstrapper : UnityBootstrapper
{
protected override void ConfigureModuleCatalog()
{
base.ConfigureModuleCatalog();
ModuleCatalog catalog = (ModuleCatalog)this.ModuleCatalog;
catalog.AddModule(typeof(ServicesModule));
}
}









share|improve this question

























  • Where do you call your bootstrapper?

    – grek40
    Nov 16 '18 at 6:35











  • @grek40 when i do login i call bootstraper.run i.e. in App.xaml.cs "onstartup"

    – mswebappdev
    Nov 16 '18 at 6:43











  • How do you create your LoginViewModel?

    – grek40
    Nov 16 '18 at 7:11














0












0








0








I have one scenario where i want to create object of my injection when i do login but i am bit unaware about cycle my service module where my dependency injection mapping defined is called after my LoginViewModel calls.
due to this my _Service object is initially null because ConfigureModuleCatalog calls after my LoginViewModel calls.
How can i correct this..actually i don't want to use new Service() if my object is null.
I am using below code for this



LoginViewModel



private readonly IService _Service;
public LoginViewModel(IService Service=null) //Also i want to make this innjection optional so i set it to NULL
{
_Service = Service;
}

private void MethodWhereIWantToUseService()
{
//_service is coming NULL because configuration or mapping of injection calls after this
_Service.MYMethod();
}


ServiceModule



public class ServicesModule : IModule
{
public void Initialize()
{
var container = ServiceLocator.Current.GetInstance<IUnityContainer>();
container.RegisterType<IService, Service>();

}
}


Bootstrapper i.e. where my module is configured



public class Bootstrapper : UnityBootstrapper
{
protected override void ConfigureModuleCatalog()
{
base.ConfigureModuleCatalog();
ModuleCatalog catalog = (ModuleCatalog)this.ModuleCatalog;
catalog.AddModule(typeof(ServicesModule));
}
}









share|improve this question
















I have one scenario where i want to create object of my injection when i do login but i am bit unaware about cycle my service module where my dependency injection mapping defined is called after my LoginViewModel calls.
due to this my _Service object is initially null because ConfigureModuleCatalog calls after my LoginViewModel calls.
How can i correct this..actually i don't want to use new Service() if my object is null.
I am using below code for this



LoginViewModel



private readonly IService _Service;
public LoginViewModel(IService Service=null) //Also i want to make this innjection optional so i set it to NULL
{
_Service = Service;
}

private void MethodWhereIWantToUseService()
{
//_service is coming NULL because configuration or mapping of injection calls after this
_Service.MYMethod();
}


ServiceModule



public class ServicesModule : IModule
{
public void Initialize()
{
var container = ServiceLocator.Current.GetInstance<IUnityContainer>();
container.RegisterType<IService, Service>();

}
}


Bootstrapper i.e. where my module is configured



public class Bootstrapper : UnityBootstrapper
{
protected override void ConfigureModuleCatalog()
{
base.ConfigureModuleCatalog();
ModuleCatalog catalog = (ModuleCatalog)this.ModuleCatalog;
catalog.AddModule(typeof(ServicesModule));
}
}






c# asp.net wpf mvvm unity-container






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 16 '18 at 6:28









FCin

2,65621128




2,65621128










asked Nov 16 '18 at 6:17









mswebappdevmswebappdev

164




164













  • Where do you call your bootstrapper?

    – grek40
    Nov 16 '18 at 6:35











  • @grek40 when i do login i call bootstraper.run i.e. in App.xaml.cs "onstartup"

    – mswebappdev
    Nov 16 '18 at 6:43











  • How do you create your LoginViewModel?

    – grek40
    Nov 16 '18 at 7:11



















  • Where do you call your bootstrapper?

    – grek40
    Nov 16 '18 at 6:35











  • @grek40 when i do login i call bootstraper.run i.e. in App.xaml.cs "onstartup"

    – mswebappdev
    Nov 16 '18 at 6:43











  • How do you create your LoginViewModel?

    – grek40
    Nov 16 '18 at 7:11

















Where do you call your bootstrapper?

– grek40
Nov 16 '18 at 6:35





Where do you call your bootstrapper?

– grek40
Nov 16 '18 at 6:35













@grek40 when i do login i call bootstraper.run i.e. in App.xaml.cs "onstartup"

– mswebappdev
Nov 16 '18 at 6:43





@grek40 when i do login i call bootstraper.run i.e. in App.xaml.cs "onstartup"

– mswebappdev
Nov 16 '18 at 6:43













How do you create your LoginViewModel?

– grek40
Nov 16 '18 at 7:11





How do you create your LoginViewModel?

– grek40
Nov 16 '18 at 7:11












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53332440%2funity-constructor-injection-with-mvvm-not-working-as-expected%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53332440%2funity-constructor-injection-with-mvvm-not-working-as-expected%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Xamarin.iOS Cant Deploy on Iphone

Glorious Revolution

Dulmage-Mendelsohn matrix decomposition in Python