2011-12-05 9 views
0

認証クラスは静的であるか、インスタンスから作成する必要がありますか?認証クラスは静的であるか、インスタンスから作成する必要がありますか?

問題は、どのコントローラにもそのインスタンスを注入することなく認証にアクセスできず、少し問題があることです。

public class HomeController : Controller 
{ 
    //=> I WANT TO AVOID THIS! <= 
    //protected IAuthentification Authentification { get; private set; } 

    //public HomeController(IAuthentification authentification) 
    //{ 
    // Authentification = authentification; 
    //} 

    public ActionResult Index() 
    { 
     //Authentification.CreerUtilisateur(new Utilisateur { Nom = "Test", NomUsage = "ttt", MotDePasse = "ddsss" }); 
     return View(); 
    } 
} 
+0

[Ninjectを使用して静的メソッドでクラスを処理するにはどうすればよいですか?](http://stackoverflow.com/questions/2710718/how-do-i-handle-classes-with-static-methods-with- ninject) –

答えて

2

ビット問題があります。

何が問題ですか? 「問題がある」とは何ですか?コンストラクターインジェクションは努力する価値があります。そうでない場合は、Property Setter InjectionまたはSetter Method Injectionを探していますか?

あなたがもっときれいだと思っても、これをすべて管理する最も明白な方法は、コンストラクタインジェクションを使うことです。

私が紛失しているものがありますか?その質問の中であなたの実際の問題を詳述しませんでした。

+0

メソッドの注入は私の問題を解決しました。私はコンストラクタを毎回書く必要はありません。どうしたら問題になるのですか? – Rushino

+0

@Rushino:a)Ninject DLLを参照するのはトップレベルコンポジションルートだけです。b)テストで初期化するのを忘れるかもしれません。c)バッキングフィールドを読み込み専用にすることはできません。以前のように思っていましたが、リファクタリングツールを使って「痛み」に対処していました。これは、クラスに必要なことを常に教えてくれることを意味します。あなたがもっとローカライズされた文脈でこれをやっているなら - あなたのメインDLLのコントローラだけで、それは最悪の違反ではありません。しかし、それを言って、私はまだそれをやりません! –

+0

ええ、私はあなたが意味するものを参照してください。私はコンストラクタインジェクションを行って、特定のコントローラーにどの通信ツールを使用しているかを知らせます。 – Rushino

関連する問題