DryIoc を使用して userviewmodel に現在のユーザーのインスタンスを登録して取得したいのですが、どうすればこれを達成できますか。これは CurrentUserConfig クラスです
public class CurrentUserConfig
{
private IContainer _container;
private UserViewModel _userViewModel;
public CurrentUserConfig(IContainer container)
{
_container = container;
_userViewModel = new UserViewModel();
}
public UserViewModel GetCurrentUser()
{
if (!string.IsNullOrEmpty(Thread.CurrentPrincipal.Identity.Name) && Thread.CurrentPrincipal.Identity.IsAuthenticated)
{
if (_userViewModel == null || _userViewModel.UserId < 1)
{
try
{
var repository = _container.Resolve<IUserRepository>();
_userViewModel = Task.Run(async () => await repository.GetUserByUsername(Thread.CurrentPrincipal.Identity.Name)).Result;
}
catch (System.Exception ex)
{
//return exception error;
}
}
}
return _userViewModel;
}
}
これは、DryIoc を使用して達成したいことです。これは SimpleInjector を使用して行われました
var currentUserConfig = new CurrentUserConfig(container);
container.RegisterSingleton(currentUserConfig);
container.Register<UserViewModel>(() =>
{
var objCurrentUserConfig = container.GetInstance<CurrentUserConfig>();
return currentUserConfig.GetCurrentUser();
}, Lifestyle.Scoped);