/// <summary> /// Find the object to pass the method call through to. /// </summary> /// <typeparam name="T">Type implementing method.</typeparam> /// <param name="query">Query string in URI format.</param> /// <param name="wcfserviceParams">WCF service connection parameters.</param> /// <param name="services">Object registry.</param> /// <param name="createService1">Function to create Dbus Service taking service connection parameters.</param> /// <param name="createService2">Function to create Dbus Service taking service connection parameters and Dbus connection parameters.</param> /// <param name="defaultConnectionParameters">Default Dbus connection parameters for Dbus Service.</param> /// <returns>Object implementing method.</returns> static public T GetWCFMethodTarget <T>(string query , Udbus.WCF.Host.WCFServiceParams wcfserviceParams , System.Collections.Generic.IDictionary <DbusServiceKey, T> services , System.Func <Udbus.Core.ServiceConnectionParams, T> createService1 , System.Func <Udbus.Core.ServiceConnectionParams, Udbus.Serialization.DbusConnectionParameters, T> createService2 , Udbus.Serialization.ReadonlyDbusConnectionParameters defaultConnectionParameters) { // Look for query parameters. string busnameValue; string pathValue; GetDbusParametersFromQuery(query, out busnameValue, out pathValue); // Lookup existing service. DbusServiceKey find = new DbusServiceKey(busnameValue, pathValue); T result; if (services.TryGetValue(find, out result) == false) // If object not in registry { result = CreateDbusService(wcfserviceParams, createService1, createService2, defaultConnectionParameters, busnameValue, pathValue); // Store new service for future generations. services[find] = result; } // Ends if object not in registry return(result); }
public override bool Equals(object obj) { bool equal = obj is DbusServiceKey; if (equal) { DbusServiceKey other = (DbusServiceKey)obj; if (equal) { equal = this.Busname.Equals(other.Busname); if (equal) { equal = this.Path.Equals(other.Path); } } } return(equal); }