Пример #1
0
        /// <summary>
        /// 添加类型
        /// </summary>
        /// <param name="services"></param>
        /// <param name="type"></param>
        /// <param name="exportServicesProvider"></param>
        protected virtual void InternalAddType(IServiceCollection services, Type type, IExportServicesProvider exportServicesProvider)
        {
            var exportServiceTypes = GetExportServiceTypes(exportServicesProvider, type);

            foreach (var exportServiceType in exportServiceTypes)
            {
                var serviceDescriptor = ServiceDescriptor.Describe(exportServiceType, type, exportServicesProvider.Lifetime);

                switch (exportServicesProvider.AddDIMode)
                {
                case AddDIMode.TryAdd:
                    services.TryAdd(serviceDescriptor);
                    break;

                case AddDIMode.Replace:
                    services.Replace(serviceDescriptor);
                    break;

                case AddDIMode.Default:
                default:
                    services.Add(serviceDescriptor);
                    break;
                }
            }
        }
Пример #2
0
 /// <summary>
 /// 获取导出的服务类型
 /// </summary>
 /// <param name="exportServicesProvider"></param>
 /// <param name="targetType"></param>
 /// <returns></returns>
 public static IEnumerable <Type> GetServiceExportTypes(this IExportServicesProvider exportServicesProvider, Type targetType)
 {
     return(exportServicesProvider.GetExportServiceTypes(targetType).Distinct());
 }
Пример #3
0
 /// <summary>
 /// 获取类型的导出服务类型
 /// </summary>
 /// <param name="exportServicesProvider"></param>
 /// <param name="type"></param>
 /// <returns></returns>
 protected virtual IEnumerable <Type> GetExportServiceTypes(IExportServicesProvider exportServicesProvider, Type type) => ExportServicesUtil.GetServiceExportTypes(exportServicesProvider, type);