void RegisterExtensionBuilderRecursively(ExtensionBuilderRecord ebRecord) { if (ebRecord.ExtensionBuilderKind == ExtensionBuilderKind.Declared) { _loaderFactory.RegisterExtensionBuilder(ebRecord); } if (ebRecord.Children != null) { foreach (var child in ebRecord.Children) { RegisterExtensionBuilderRecursively(child); } } }
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); }
//readonly ExtensionBuilderRecord _old; internal UnaffectedReferencedExtensionBuilderResolution(AddinResolution declaringAddin, ExtensionBuilderRecord old) : base(declaringAddin, old) /*_old = old;*/ }
internal IndirectlyAffectedReferencedExtensionBuilderResolution(AddinResolution declaringAddin, ExtensionBuilderRecord old) : base(declaringAddin) { _old = old; }
internal DirectlyAffectedDeclaredExtensionBuilderResolution(AddinResolution declaringAddin, ExtensionBuilderRecord old) : base(declaringAddin) { _old = old; }
internal void UnregisterExtensionBuilder(ExtensionBuilderRecord ebRecord) { _uid2ExLoaderFactories.Remove(ebRecord.Uid); }