// Todo: This is duplicate of code in WorkflowRuntime internal object ServiceFromSettings(WorkflowRuntimeServiceElement serviceSettings) { object service = null; Type t = Type.GetType(serviceSettings.Type, true); ConstructorInfo serviceProviderAndSettingsConstructor = null; ConstructorInfo serviceProviderConstructor = null; ConstructorInfo settingsConstructor = null; foreach (ConstructorInfo ci in t.GetConstructors()) { ParameterInfo[] pi = ci.GetParameters(); if (pi.Length == 1) { if (typeof(IServiceProvider).IsAssignableFrom(pi[0].ParameterType)) { serviceProviderConstructor = ci; } else if (typeof(NameValueCollection).IsAssignableFrom(pi[0].ParameterType)) { settingsConstructor = ci; } } else if (pi.Length == 2) { if (typeof(IServiceProvider).IsAssignableFrom(pi[0].ParameterType) && typeof(NameValueCollection).IsAssignableFrom(pi[1].ParameterType)) { serviceProviderAndSettingsConstructor = ci; break; } } } if (serviceProviderAndSettingsConstructor != null) { service = serviceProviderAndSettingsConstructor.Invoke( new object[] { Runtime, serviceSettings.Parameters }); } else if (serviceProviderConstructor != null) { service = serviceProviderConstructor.Invoke(new object[] { Runtime }); } else if (settingsConstructor != null) { service = settingsConstructor.Invoke(new object[] { serviceSettings.Parameters }); } else { service = Activator.CreateInstance(t); } return(service); }
internal object ServiceFromSettings(WorkflowRuntimeServiceElement serviceSettings) { Type type = Type.GetType(serviceSettings.Type, true); ConstructorInfo info = null; ConstructorInfo info2 = null; ConstructorInfo info3 = null; foreach (ConstructorInfo info4 in type.GetConstructors()) { ParameterInfo[] parameters = info4.GetParameters(); if (parameters.Length == 1) { if (typeof(IServiceProvider).IsAssignableFrom(parameters[0].ParameterType)) { info2 = info4; } else if (typeof(NameValueCollection).IsAssignableFrom(parameters[0].ParameterType)) { info3 = info4; } } else if (((parameters.Length == 2) && typeof(IServiceProvider).IsAssignableFrom(parameters[0].ParameterType)) && typeof(NameValueCollection).IsAssignableFrom(parameters[1].ParameterType)) { info = info4; break; } } if (info != null) { return(info.Invoke(new object[] { base.Runtime, serviceSettings.Parameters })); } if (info2 != null) { return(info2.Invoke(new object[] { base.Runtime })); } if (info3 != null) { return(info3.Invoke(new object[] { serviceSettings.Parameters })); } return(Activator.CreateInstance(type)); }
public void Remove(WorkflowRuntimeServiceElement serviceSettings) { base.BaseRemove(base.GetElementKey(serviceSettings)); }