public void SetContext(PluginManagerContext context)
        {
            #region Plugin folder
            if (context.PluginFolder.Exists)
            {
                _pluginFolder = context.PluginFolder;
            }
            else
            {
                //TODO : Create folder
                _pluginFolder = context.PluginFolder;
            }
            #endregion

            #region Plugin shadow copy folder
            if (context.ShadowCopyFolder.Exists)
            {
                _shadowCopyFolder = context.ShadowCopyFolder;
            }
            else
            {
                //TODO : Create folder
                _shadowCopyFolder = context.ShadowCopyFolder;
            }
            #endregion

            #region User claim manager

            if (context.UserClaimsManager != null)
            {
                _userClaimsManager = context.UserClaimsManager;
            }

            #endregion
        }
        //TODO : Aspect -> trace
        //TODO : Add trace information attribute
        static PluginManagerDynamim()
        {
            //TODO : Create folders if not exist

            _pluginFolder = HostingEnvironment.MapPath("~/plugins") != null ?
                            new DirectoryInfo(HostingEnvironment.MapPath("~/plugins")) :
                            new DirectoryInfo(@"c:\plugins");

            _shadowCopyFolder = HostingEnvironment.MapPath("~/plugins/temp") != null ?
                                new DirectoryInfo(HostingEnvironment.MapPath("~/plugins/temp")) :
                                new DirectoryInfo(@"c:\plugins");

            //TODO : How to set default
            _userClaimsManager = null;

            AppDomain.CurrentDomain.ReflectionOnlyAssemblyResolve += (s, e) =>
            {
                var a = Assembly.ReflectionOnlyLoad(e.Name);
                if (a == null)
                {
                    throw new TypeLoadException("Could not load assembly " + e.Name);
                }
                return(a);
            };
        }
 public PluginManagerContext(IUserClaimsManager userClaimsManager, DirectoryInfo pluginFolder, DirectoryInfo shadowCopyFolder)
 {
     PluginFolder      = pluginFolder;
     ShadowCopyFolder  = shadowCopyFolder;
     UserClaimsManager = userClaimsManager;
 }
 public PluginManagerContext(IUserClaimsManager userClaimsManager)
 {
     UserClaimsManager = userClaimsManager;
 }
 public PluginAuthorizationBehavior(IUserClaimsManager userClaimsManager)
 {
     _userClaimsManager = userClaimsManager;
 }