コード例 #1
0
        public void test1() {

            Assert.False(persistenceDriver.GetPluginInterfacesNames().Count() > 0);
            Assert.False(persistenceDriver.ExistPluginInterface("test"));

            persistenceDriver.AddPluginInterface("test");

            Assert.True(persistenceDriver.GetPluginInterfacesNames().Count() > 0);
            Assert.True(persistenceDriver.ExistPluginInterface("test"));
            Assert.False(persistenceDriver.ExistPluginImplementation("test", "local:test"));

            persistenceDriver.AddPluginImplementation("test", "local:test");

            Assert.True(persistenceDriver.GetPluginImplementationsAddresses("test").Count() > 0);
            Assert.True(persistenceDriver.ExistPluginInterface("test"));
            Assert.True(persistenceDriver.ExistPluginImplementation("test", "local:test"));
            Assert.False(persistenceDriver.ExistPluginImplementation("test", "local:test2"));

            persistenceDriver.RemovePluginImplementation("test", "local:test");

            Assert.True(persistenceDriver.GetPluginInterfacesNames().Count() > 0);
            Assert.False(persistenceDriver.GetPluginImplementationsAddresses("test").Count() > 0);
            Assert.True(persistenceDriver.ExistPluginInterface("test"));
            Assert.False(persistenceDriver.ExistPluginImplementation("test", "local:test"));
            
            persistenceDriver.RemovePluginInterface("test");

            Assert.False(persistenceDriver.GetPluginInterfacesNames().Count() > 0);
            Assert.False(persistenceDriver.ExistPluginInterface("test"));

        }// END Method test1
コード例 #2
0
        }    // END Method GetPluginImplementationsNames

        public IEnumerable <string> GetPluginImplementationsAddresses(string pluginInterfaceName)
        {
            List <string> rslt = new List <string>();

            if (readWritePersistenceDriver.ExistPluginInterface(pluginInterfaceName))
            {
                foreach (string implementation in readWritePersistenceDriver.GetPluginImplementationsAddresses(pluginInterfaceName))
                {
                    rslt.Add(implementation);
                }
            }

            foreach (IPersistenceDriver driver in readOnlyPersistenceDrivers)
            {
                if (driver.ExistPluginInterface(pluginInterfaceName))
                {
                    foreach (string implementation in driver.GetPluginImplementationsAddresses(pluginInterfaceName))
                    {
                        if (!rslt.Contains(implementation))
                        {
                            rslt.Add(implementation);
                        }
                    }
                }
            }

            return(rslt);
        } // END Property GetPluginImplementationsNames
コード例 #3
0
        }// END Method UnregisterSingletonPlugin

        public void UnregisterSingletonPlugin(Type pluginInterfaceClass, IPersistenceDriver persistenceDriver)
        {
            if (persistenceDriver.ExistPluginInterface(pluginInterfaceClass.AssemblyQualifiedName))
            {
                foreach (string implementationAddress in new List <string>(persistenceDriver.GetPluginImplementationsAddresses(pluginInterfaceClass.AssemblyQualifiedName)))
                {
                    persistenceDriver.RemovePluginImplementation(pluginInterfaceClass.AssemblyQualifiedName, implementationAddress);
                }

                persistenceDriver.RemovePluginInterface(pluginInterfaceClass.AssemblyQualifiedName);
            }
        }// END Method UnregisterSingletonPlugin
コード例 #4
0
        }// END Method UnregisterPlugin

        public void UnregisterPlugin(Type pluginInterfaceClass, string pluginImplementationAddress, IPersistenceDriver persistenceDriver)
        {
            if (persistenceDriver.ExistPluginInterface(pluginInterfaceClass.AssemblyQualifiedName) &&
                persistenceDriver.ExistPluginImplementation(pluginInterfaceClass.AssemblyQualifiedName, pluginImplementationAddress))
            {
                persistenceDriver.RemovePluginImplementation(pluginInterfaceClass.AssemblyQualifiedName, pluginImplementationAddress);

                if (!persistenceDriver.GetPluginImplementationsAddresses(pluginInterfaceClass.AssemblyQualifiedName).GetEnumerator().MoveNext())
                {
                    persistenceDriver.RemovePluginInterface(pluginInterfaceClass.AssemblyQualifiedName);
                }
            }
        }// END Method UnregisterPlugin
コード例 #5
0
        }        // END Property CachedPersistenceDriver


        public void ReloadCache()
        {
            plugins = new Dictionary <string, List <string> >();

            foreach (string pluginInterfaceName in cachedPersistenceDriver.GetPluginInterfacesNames())
            {
                plugins.Add(pluginInterfaceName, new List <string>());

                foreach (string pluginImplementationAddress in cachedPersistenceDriver.GetPluginImplementationsAddresses(pluginInterfaceName))
                {
                    plugins[pluginInterfaceName].Add(pluginImplementationAddress);
                }
            }
        }    // END Method ReloadCache