1

Global.asaxに次のようなクラスを作成しました。

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();

    WebApiConfig.Register(GlobalConfiguration.Configuration);
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
    AuthConfig.RegisterAuth();          

   //SHOULD I PUT THE LIST DESCRIBLED BELOW IN HERE?
}

public sealed class security
{
    private static readonly Lazy<security> lazy = new Lazy<security>(() => new security());

    public static security Instance { get { return lazy.Value; } }

    private security()
    {
    }

   //OR SHOULD I PUT THE LIST DESCRIBLED BELOW IN HERE?

}

質問:

  1. 私はそれを使用して、すべてのユーザーと共有する静的リストを作成しています。これが私に必要なものです:public static List<permissionTemp> userPermissionSet { get; set; }、しかし、その行をどこに置くべきかわからないので、アプリケーションが起動するとすぐに作成されます。
  2. 作成したら、このリストを取得して、ユーザーのログイン時に作成されるオブジェクトを追加する必要がありますが、Global.asaxにあるため、コントローラーからそのクラスを呼び出す方法がわかりません。

リストにアイテムを追加する必要があるたびにこのクラスのインスタンスを取得する必要があるため、シングルトンパターンを使用する必要があるかどうかは疑問です。そうだと思います。

4

1 に答える 1

1

パーミッションセットを含むシングルトンクラスを作成し、アプリケーション全体で使用します。

public class PermissionManager{
    private PermissionManager() { UserPermissionSet = new List<permissionTemp>(); }
    private PermissionManager _instance;
    public PermissionManager Instance{
        get{ 
            if (_instance==null) _instance=new PermissionManager();
            return _instance;
        }
    }
    public List<permissionTemp> UserPermissionSet { get; private set; }
}

注:単純な実装...スレッドセーフなコンストラクターを実装する必要があります

次に、使用するコードで

PermissionManager.Instance.UserPermissionSet 
于 2013-03-01T14:58:35.203 に答える