2011-06-27 13 views
-1

私は前に書かれたコードを使用してリファクタリングを行いたいと思います。問題は次のとおりです。 ASP.NET MVCアプリケーションでは、各ユーザーロールに複数のユーザーロールが表示される必要があります。特定のユーザーロール、異なるユーザーロール、アクションに適用できるいくつかのアクションを含むメニューが表示されます。 ユーザーが管理者としてログインし、学習者のメニュー項目がスイッチ構造を持たないクラス構造の実装をリファクタリングおよび再設計する方法は?

  1. パスワード変更
  2. CV
  3. の割り当てが表示されます学習者(使用の役割)のための個人的な詳細ページを見てみたい:メニューから、例えば異なっています資格
ユーザは、例えばアセッサ(ユーザロール)のための他の役割でログインしている場合

メニューは、他の項目

  1. パスワード変更
  2. 進捗
  3. 割り当て資格
  4. 割り当て単位
が表示されます

と、ユーザーが個人的な詳細ページを見たい場合は、メニューは他の項目と共に表示されます。

特定のユーザーロールのメニュー項目が異なるという主な考え方は、約7人のユーザーロールです。また、他のユーザーの個人用詳細ページを表示するさまざまな組み合わせがあります。現時点で

このクラスから

public class LearnerMenuBuilder 
{ 

    public LearnerMenuBuilder(UserRole userRole, UserRole loggedUserRole) 
     : base(userRole, loggedUserRole) 
    { 

    } 

    public UserItemMenu Build() 
    { 
     var ret = new UserItemMenu(); 

     switch (UserTypeHelper.GetTypeNameOf(currentUserRole.GetType())) 
     { 
      case Const.LearnerRole: 
       ret.Items = GetLearnerMenu(); 
       return ret; 

      case Const.AssessorRole: 
       ret.Items = GetMenuForAssessor(); 
       return ret; 
      case Const.InternalVerifierRole: 
      case Const.QualityAdviserRole: 
      case Const.ManagerRole: 
      case Const.NonEdiQualityAdviserRole: 
       ret.Items = GetMenuForInternalVerifier(); 
       return ret; 

      case Const.CentreAdministratorRole: 
       ret.Items = GetMenuForCentreAdmin(); 
       return ret; 
      case Const.SystemAdministratorRole: 
       ret.Items = GetMenuItemsForCentreSupport(); 
       return ret; 
      default: 
       return ret; 
     } 
    } 

    //private methods for add items to menu 

} 

}

のようなコードを見て、あなたができることを、私はこれをリファクタリングし、スイッチの建設を削除したいが、スイッチケースの文があり、各ユーザの役割について。

どのようにして効率的な方法でコードのリファクタリングと再設計ができますか?

いくつかの提案や解決方法をお手伝いしてください。

ありがとうございます!

答えて

1

サイトマップと役割プロバイダを参照してください

関連する問題