/// <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)); } }