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
} // 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
}// 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
}// 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
} // 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