internal static SoapExtensionRuntimeConfig[][] GetTypeExtensions(Type serviceType) { if (globalExtensions == null) { InitializeGlobalExtensions(); } SoapExtensionRuntimeConfig[][] exts = new SoapExtensionRuntimeConfig[2][]; for (int group = 0; group < 2; group++) { ArrayList globList = globalExtensions[group]; if (globList == null) { continue; } exts [group] = new SoapExtensionRuntimeConfig [globList.Count]; for (int n = 0; n < globList.Count; n++) { #if NET_2_0 SoapExtensionTypeElement econf = (SoapExtensionTypeElement)globList [n]; #else WSExtensionConfig econf = (WSExtensionConfig)globList [n]; #endif SoapExtensionRuntimeConfig typeconf = new SoapExtensionRuntimeConfig(); typeconf.Type = econf.Type; SoapExtension ext = (SoapExtension)Activator.CreateInstance(econf.Type); typeconf.InitializationInfo = ext.GetInitializer(serviceType); exts [group][n] = typeconf; } } return(exts); }
public static ArrayList BuildExtensionList(ArrayList exts) #endif { ArrayList extensionTypes = new ArrayList(); if (exts != null) { #if NET_2_0 foreach (TypeElement econf in exts) { extensionTypes.Add(econf); } #else foreach (WSExtensionConfig econf in exts) { bool added = false; for (int n = 0; n < extensionTypes.Count && !added; n++) { WSExtensionConfig cureconf = (WSExtensionConfig)extensionTypes [n]; if ((econf.Group < cureconf.Group) || ((econf.Group == cureconf.Group) && (econf.Priority < cureconf.Priority))) { extensionTypes.Insert(n, econf); added = true; } } if (!added) { extensionTypes.Add(econf); } } #endif } ArrayList extensions = new ArrayList(extensionTypes.Count); #if NET_2_0 foreach (TypeElement econf in extensionTypes) #else foreach (WSExtensionConfig econf in extensionTypes) #endif { extensions.Add(Activator.CreateInstance(econf.Type)); } return(extensions); }