3

私は基本的なUnity MVC Nuget Bootstrapperを使用しています。 私はDoSomethingServiceがICurrentUserオブジェクトまたはレゾルバのいくつかのフォームを取得します現在のユーザを注入するUnity MVC

_container.RegisterType<IDoSomethingService, DoSomethingService>(); 

ように定義していたサービスに現在ログインしているユーザーを注入したいと思います。私は次の使用私のプロジェクトで

DoSomethingService.CurrentUSer = User.Identity.Name; 

答えて

9

を::

は私が

DoSomethingService.DoSomething(currentUserUsingService,...); 

またはすべてのMVCコントローラのコンストラクタで

のようにも避けて設定を呼び出しを行うことを回避しようとしています
public interface ICurrentUserService 
{ 
    int? GetId(); 
} 

次の実装を登録します。

public class CurrentUserService: ICurrentUserService 
{ 
    public int? GetId() 
    { 
     if (!HttpContext.Current.User.Identity.IsAuthenticated) 
      return null; 
     return int.Parse(HttpContext.Current.User.Identity.Name);//When auth - id stored in cookie 
    } 
} 

_container.RegisterType<ICurrentUserService, CurrentUserService>(); 

サービスをICurrentUserService(ctorパラメータを使用して)に依存させるか、userIdをコントローラのサービスのメソッドに渡します。

関連する問題