2011-09-12 8 views
0

私はそれが次のようになります....、インターフェース、コントローラーをリポジトリが生じています。..にはインタフェースとDIがありますかどうかはわかりませんか? ..Asp.Net MVC 3

インタフェース - IUSER

public interface IUserRepositories 
    { 
     bool CreateUser(User newUser); 

     bool CheckUniqueEmail(string Email); 

     bool CheckUserLoginDetails(string email, string password); 
    } 

User Repository 
============= 
which is implementing all the methods .. 

1) CreateUSer 
2) CheckLoginDetails 
3) CheckUniqueEmail 

コントローラ - それは何をするかわかりません...

private IUserRepositories _userRepo; 

     public UserController() : this(new UserRepositories()) 
     { 
     } 

     public UserController(IUserRepositories userRepo) 
     { 
      this._userRepo = userRepo; 
     } 

はい...私はこの方法を実装することにより得ることができるものの利益...説明

してください場合は...混乱を最後の3時間から...これはOKに見えるです私たち....

おかげで...

答えて

1

が、これは

ほぼOKに見えますです。あなたが持っているものは、しばしばpoor man's DIと呼ばれます。正しい方法は、以下の(デフォルトコンストラクタが削除されたことの通知)である:

private IUserRepositories _userRepo; 
public UserController(IUserRepositories userRepo) 
{ 
    this._userRepo = userRepo; 
} 

方法は、お使いのコントローラが弱いユニットにそれが容易になり、リポジトリに接続されているということである制御の反転を使用して、あなたが持っている利点孤立してテストし、アプリケーションのさまざまな層をより再利用可能で保守しやすくします。

デフォルトコンストラクタを除去することにより、あなたは明らかに、このクラスが依存して与えられた契約(インターフェース)を実装しなければならないのリポジトリを必要とすることが与えられたクラスの消費者に示すされています。これにより、コードが自動的に消費者に自動的に文書化されます。

+0

私はこのアプリを実行しているときに例外をスローします。 "パラメータなしの構造は見つかりませんでした" ... –

+1

@ patel.milanb、これはDIフレームワークを使用する必要があります作業。それらのかなり多くがあります。ちょうどあなたに合ったものを選んでください。しかし、あなたのコードの残りの部分とは本当に無関係です。 DIフレームワークは、通常、完全に独立して構成されます。 –

+0

それは素晴らしかった...私はそれのためにDIフレームワークを使用しなければならないことを知っていた....今私はどこに欠けているか知っている... thx再び...私はそのためにStructureMapを使用すると思います..私にはかなり簡単に見えます.. –

関連する問題