コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }