Refactored.

pull/81/head
Halil İbrahim Kalkan 9 years ago
parent e9f21fb3b0
commit 1213bf2233

@ -1,4 +1,5 @@
using System;
using JetBrains.Annotations;
namespace Volo.Abp.Modularity
{
@ -12,6 +13,7 @@ namespace Volo.Abp.Modularity
/// <summary>
/// Types of depended modules.
/// </summary>
[NotNull]
public Type[] DependedModuleTypes { get; }
/// <summary>
@ -20,9 +22,10 @@ namespace Volo.Abp.Modularity
/// <param name="dependedModuleTypes">Types of depended modules</param>
public DependsOnAttribute(params Type[] dependedModuleTypes)
{
DependedModuleTypes = dependedModuleTypes;
DependedModuleTypes = dependedModuleTypes ?? new Type[0];
}
[NotNull]
public virtual Type[] GetDependedModuleTypes()
{
return DependedModuleTypes;

@ -1,9 +1,11 @@
using System;
using JetBrains.Annotations;
namespace Volo.Abp.Modularity
{
public interface IDependedModuleTypesProvider
{
[NotNull]
Type[] GetDependedModuleTypes();
}
}

@ -1,11 +1,12 @@
using Volo.DependencyInjection;
using JetBrains.Annotations;
using Volo.DependencyInjection;
namespace Volo.Abp.Modularity
{
public interface IModuleLifecycleContributer : ISingletonDependency
{
void Initialize(IAbpModule module);
void Initialize([NotNull] IAbpModule module);
void Shutdown(IAbpModule module);
void Shutdown([NotNull] IAbpModule module);
}
}

@ -1,4 +1,5 @@
using System;
using JetBrains.Annotations;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Modularity.PlugIns;
@ -6,6 +7,7 @@ namespace Volo.Abp.Modularity
{
public interface IModuleLoader
{
AbpModuleDescriptor[] LoadModules(IServiceCollection services, Type startupModuleType, PlugInSourceList plugInSources);
[NotNull]
AbpModuleDescriptor[] LoadModules([NotNull] IServiceCollection services, [NotNull] Type startupModuleType, [NotNull] PlugInSourceList plugInSources);
}
}

@ -1,9 +1,11 @@
using System.Collections.Generic;
using JetBrains.Annotations;
namespace Volo.Abp.Modularity
{
public interface IModuleManager
{
[NotNull]
IReadOnlyList<AbpModuleDescriptor> Modules { get; }
void InitializeModules();

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using JetBrains.Annotations;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Modularity.PlugIns;
using Volo.ExtensionMethods.Collections.Generic;
@ -9,8 +10,13 @@ namespace Volo.Abp.Modularity
{
public class ModuleLoader : IModuleLoader
{
public AbpModuleDescriptor[] LoadModules(IServiceCollection services, Type startupModuleType, PlugInSourceList plugInSources)
[NotNull]
public AbpModuleDescriptor[] LoadModules([NotNull] IServiceCollection services, [NotNull] Type startupModuleType, [NotNull] PlugInSourceList plugInSources)
{
Check.NotNull(services, nameof(services));
Check.NotNull(startupModuleType, nameof(startupModuleType));
Check.NotNull(plugInSources, nameof(plugInSources));
var modules = new List<AbpModuleDescriptor>();
FillModules(modules, services, startupModuleType, plugInSources);

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.IO;
using JetBrains.Annotations;
using Volo.Abp.Reflection;
using Volo.ExtensionMethods.Collections.Generic;
@ -12,13 +13,16 @@ namespace Volo.Abp.Modularity.PlugIns
public SearchOption SearchOption { get; set; }
public FolderPlugInSource(string folder, SearchOption searchOption = SearchOption.TopDirectoryOnly)
public FolderPlugInSource([NotNull] string folder, SearchOption searchOption = SearchOption.TopDirectoryOnly)
{
Check.NotNull(folder, nameof(folder));
Folder = folder;
SearchOption = searchOption;
}
public List<Type> GetModules()
[NotNull]
public Type[] GetModules()
{
var modules = new List<Type>();
@ -41,7 +45,7 @@ namespace Volo.Abp.Modularity.PlugIns
}
}
return modules;
return modules.ToArray();
}
}
}

@ -1,10 +1,11 @@
using System;
using System.Collections.Generic;
using JetBrains.Annotations;
namespace Volo.Abp.Modularity.PlugIns
{
public interface IPlugInSource
{
List<Type> GetModules();
[NotNull]
Type[] GetModules();
}
}

@ -1,18 +1,21 @@
using System;
using System.Collections.Generic;
using System.Linq;
using JetBrains.Annotations;
namespace Volo.Abp.Modularity.PlugIns
{
public static class PlugInSourceExtensions
{
public static List<Type> GetModulesWithAllDependencies(this IPlugInSource plugInSource)
[NotNull]
public static Type[] GetModulesWithAllDependencies([NotNull] this IPlugInSource plugInSource)
{
Check.NotNull(plugInSource, nameof(plugInSource));
return plugInSource
.GetModules()
.SelectMany(AbpModuleHelper.FindAllModuleTypes)
.Distinct()
.ToList();
.ToArray();
}
}
}

@ -1,17 +1,19 @@
using System;
using System.Collections.Generic;
using System.Linq;
using JetBrains.Annotations;
namespace Volo.Abp.Modularity.PlugIns
{
public class PlugInSourceList : List<IPlugInSource>
{
internal List<Type> GetAllModules()
[NotNull]
internal Type[] GetAllModules()
{
return this
.SelectMany(pluginSource => pluginSource.GetModulesWithAllDependencies())
.Distinct()
.ToList();
.ToArray();
}
}
}

@ -1,17 +1,22 @@
using System;
using System.IO;
using JetBrains.Annotations;
namespace Volo.Abp.Modularity.PlugIns
{
public static class PlugInSourceListExtensions
{
public static void AddFolder(this PlugInSourceList list, string folder, SearchOption searchOption = SearchOption.TopDirectoryOnly)
public static void AddFolder([NotNull] this PlugInSourceList list, [NotNull] string folder, SearchOption searchOption = SearchOption.TopDirectoryOnly)
{
Check.NotNull(list, nameof(list));
list.Add(new FolderPlugInSource(folder, searchOption));
}
public static void AddTypes(this PlugInSourceList list, params Type[] moduleTypes)
public static void AddTypes([NotNull] this PlugInSourceList list, params Type[] moduleTypes)
{
Check.NotNull(list, nameof(list));
list.Add(new PlugInTypeListSource(moduleTypes));
}
}

@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using JetBrains.Annotations;
namespace Volo.Abp.Modularity.PlugIns
{
@ -10,12 +9,13 @@ namespace Volo.Abp.Modularity.PlugIns
public PlugInTypeListSource(params Type[] moduleTypes)
{
_moduleTypes = moduleTypes;
_moduleTypes = moduleTypes ?? new Type[0];
}
public List<Type> GetModules()
[NotNull]
public Type[] GetModules()
{
return _moduleTypes.ToList();
return _moduleTypes;
}
}
}
Loading…
Cancel
Save