示例#1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="type"></param>
        private void InitializeManager(ManagerDefinition manager)
        {
            foreach (var dependency in manager.Definition.Dependencies)
            {
                var dependencyDefinition = m_definitions.FirstOrDefault(m => m.Definition.Id == dependency);
                if (dependencyDefinition != null)
                {
                    InitializeManager(dependencyDefinition);
                }
            }

            var instance = ReflectHelper.FetchPropertyValue <IManager>
                           (
                manager.Type,
                "Instance",
                System.Reflection.BindingFlags.Static |
                System.Reflection.BindingFlags.Public |
                System.Reflection.BindingFlags.FlattenHierarchy
                           );

            instance.Initialize();

            // Since the manager is loaded we dont need to load it back
            m_definitions.Remove(manager);

            if (m_definitions.Count > 0)
            {
                InitializeManager(m_definitions[0]);
            }
        }
示例#2
0
        public static IReadOnlyDictionary <string, ManagerDefinition> GetManagers([NotNull] XmlDocument configuration)
        {
            Assert.ArgumentNotNull(configuration, nameof(configuration));

            return(configuration
                   .SelectElements("/configuration/sitecore/*/providers")
                   .Select(p => (XmlElement)p.ParentNode)
                   .Select(m => ManagerDefinition.Parse(m))
                   .ToDictionary(m => m.Name, x => x));
        }
示例#3
0
        public static ManagerDefinition GetManager([NotNull] XmlDocument configuration, [NotNull] string name)
        {
            Assert.ArgumentNotNull(configuration, nameof(configuration));
            Assert.ArgumentNotNull(name, nameof(name));

            var manager = configuration.SelectSingleNode("/configuration/sitecore/" + name) as XmlElement;

            if (manager != null)
            {
                return(ManagerDefinition.Parse(manager));
            }

            return(null);
        }