private static List <Type> GetObjectsFromNamespace(Type objectType, string objectNamespace, CQRS_TYPE cqrsType) { if (cqrsType == CQRS_TYPE.None) { return(objectType.Assembly.GetExportedTypes().Where(x => x.FullName.StartsWith(objectNamespace)).ToList()); } return(objectType.Assembly.GetExportedTypes().Where(x => x.FullName.StartsWith(objectNamespace) && x.FullName.Contains(Enum.GetName(typeof(CQRS_TYPE), cqrsType))).ToList()); }
public static void RegisterLayer(IServiceCollection services, IocRegisterDto input, CQRS_TYPE cqrsType) { var interfaces = GetObjectsFromNamespace(input.RegisterInterface, input.InterfaceNamespace, cqrsType); var classes = GetObjectsFromNamespace(input.RegisterClass, input.ClassNamespace, cqrsType); foreach (Type typeClass in classes) { Type typeInterface = interfaces.Find(x => x.IsAssignableFrom(typeClass)); if (typeInterface == null) { continue; } services.AddTransient(typeInterface, typeClass); } }