1

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);
4

1 に答える 1