Exemplo n.º 1
0
        /// <summary>
        ///
        /// </summary>
        internal protected virtual void loadContributionFactories()
        {
            XmlElement root = doc.DocumentElement;

            // locate contribution factories first,
            // because we'll need them to load contributions.
            foreach (XmlElement contrib in root.SelectNodes("contribution"))
            {
                string type = contrib.Attributes["type"].Value;
                if (type == "contribution")
                {
                    // load a contribution factory

                    string contributionName = XmlUtil.SelectSingleNode(contrib, "name").InnerText;

                    IContributionFactory factory =
                        (IContributionFactory)PluginUtil.loadObjectFromManifest(contrib);

                    // register it
                    PluginManager.AddContributionFactory(
                        contributionName,
                        factory);
                }
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="owner"></param>
        /// <param name="e"></param>
        /// <returns></returns>
        public Contribution Load(PluginDefinition owner, XmlElement e)
        {
            Contribution contrib = (Contribution)PluginUtil.loadObjectFromManifest(e);

            if (baseType.IsInstanceOfType(contrib))
            {
                return(contrib);
            }
            else
            {
                throw new Exception(string.Format(
                                        "{0} is incorrect for for this contribution (expected:{1})",
                                        contrib.GetType().FullName, baseType.FullName));
            }
        }