void RegisterExtensionBuilderRecursively(ExtensionBuilderRecord ebRecord)
        {
            if (ebRecord.ExtensionBuilderKind == ExtensionBuilderKind.Declared)
            {
                _loaderFactory.RegisterExtensionBuilder(ebRecord);
            }

            if (ebRecord.Children != null)
            {
                foreach (var child in ebRecord.Children)
                {
                    RegisterExtensionBuilderRecursively(child);
                }
            }
        }
Example #2
0
        internal void RegisterExtensionBuilder(ExtensionBuilderRecord ebRecord)
        {
            ExtensionLoaderFactory factory;

            if (_uid2ExLoaderFactories.TryGetValue(ebRecord.Uid, out factory))
            {
                return;
            }

            var assembly = _asmResolver.GetOrLoadAssemblyByUid(ebRecord.AssemblyUid);
            var ebType   = assembly.GetType(ebRecord.TypeName);

            var extensionType = GetExtensionType(ebType);
            var factoryType   = typeof(ExtensionLoaderFactory <>).MakeGenericType(extensionType);

            //var _extensionBuilderFactory = new ReflectionExtensionBuilderFactory();
            factory = Activator.CreateInstance(factoryType, _extensionBuilderFactory, ebType) as ExtensionLoaderFactory;

            _uid2ExLoaderFactories.Add(ebRecord.Uid, factory);
        }
Example #3
0
        //readonly ExtensionBuilderRecord _old;

        internal UnaffectedReferencedExtensionBuilderResolution(AddinResolution declaringAddin, ExtensionBuilderRecord old)
            : base(declaringAddin, old) /*_old = old;*/ }
Example #4
0
 internal IndirectlyAffectedReferencedExtensionBuilderResolution(AddinResolution declaringAddin, ExtensionBuilderRecord old)
     : base(declaringAddin)
 {
     _old = old;
 }
Example #5
0
 internal DirectlyAffectedDeclaredExtensionBuilderResolution(AddinResolution declaringAddin, ExtensionBuilderRecord old)
     : base(declaringAddin)
 {
     _old = old;
 }
Example #6
0
 internal void UnregisterExtensionBuilder(ExtensionBuilderRecord ebRecord)
 {
     _uid2ExLoaderFactories.Remove(ebRecord.Uid);
 }