/// <summary> /// 获取指定类型的应用程序构建器 /// </summary> /// <typeparam name="T">必须实现 <see cref="IAppContainerBuilder"/> 接口</typeparam> /// <returns></returns> public T GetAppContainerBuilder <T>() where T : IAppContainerBuilder, new() { Type type = typeof(T); IAppContainerBuilder builder = this.appContainerBuilders.Where(x => type.IsAssignableFrom(x.GetType())) .FirstOrDefault(); if (builder == null) { builder = new T(); PluginInvoker <OnAppContainerBuilderCreatedArguments> .SetArgument(new OnAppContainerBuilderCreatedArguments(builder)) .SetPlugins(this.Plugins) .Invoke((t, args) => t.OnAppContainerBuilderCreated(this, args)); this.appContainerBuilders.Add(builder); } return((T)builder); }
public OnAppContainerBuilderCreatedArguments(IAppContainerBuilder appContainerBuilder) { AppContainerBuilder = appContainerBuilder; }