Example #1
0
 private void ApplyUnapplyExtensionServer(ExtensionManager extensionManager, bool shouldApply,
                                          ExtensionServer server)
 {
     if (shouldApply)
     {
         // add extensions
         foreach (Extension ext in extensionManager.CreateExtensions(server, this))
         {
             _extensions.Add(new ExtensionEntry(ext, server));
         }
     }
     else
     {
         // remove extensions
         _extensions.RemoveAll(
             delegate(ExtensionEntry entry)
         {
             if (entry.Server == server)
             {
                 server.RemoveExtension(entry.Extension);
                 return(true);
             }
             else
             {
                 return(false);
             }
         });
     }
 }
 /// <summary/>
 protected override void OnInitialized()
 {
     base.OnInitialized();
     _a = Context.Services.ExtensionManager.GetExtensionServer(new ExtensionServerAttribute(typeof(A)));
     _b = Context.Services.ExtensionManager.GetExtensionServer(new ExtensionServerAttribute(typeof(B)));
     _a.ShouldApplyExtensionsInvalidated += OnShouldApplyExtensionsInvalidated;
     _b.ShouldApplyExtensionsInvalidated += OnShouldApplyExtensionsInvalidated;
 }
Example #3
0
        internal void ReapplyExtensionServer(ExtensionManager extensionManager, ExtensionServer server)
        {
            Debug.Assert(_extensionServers != null);

            for (int i = 0; i < _extensionServers.Length; i++)
            {
                if (_extensionServers[i] == server)
                {
                    bool shouldApply = server.ShouldApplyExtensions(this);
                    if (shouldApply != _extensionServerIsApplied[i])
                    {
                        _extensionServerIsApplied[i] = shouldApply;
                        ApplyUnapplyExtensionServer(extensionManager, shouldApply, server);
                    }
                }
            }
        }
 public ExtensionEntry(Extension extension, ExtensionServer server)
 {
     this.Extension = extension;
     this.Server    = server;
 }