Class ModuleCatalog
The ModuleCatalog holds information about the modules that can be used by the application. Each module is described in a ModuleInfo class, that records the name, type and location of the module. It also verifies that the ModuleCatalog is internally valid. That means that it does not have:
The ModuleCatalog also serves as a baseclass for more specialized Catalogs .
Implements
Namespace: Sartorius.SAF.Presentation.Modularity
Assembly: Sartorius.SAF.Presentation.dll
Syntax
public class ModuleCatalog : IModuleCatalog
Constructors
View SourceModuleCatalog()
Initializes a new instance of the ModuleCatalog class.
Declaration
public ModuleCatalog()
ModuleCatalog(IEnumerable<ModuleInfo>)
Initializes a new instance of the ModuleCatalog class while providing an initial list of ModuleInfos.
Declaration
public ModuleCatalog(IEnumerable<ModuleInfo> modules)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IEnumerable<ModuleInfo> | modules | The initial list of modules. |
Properties
View SourceGrouplessModules
Returns the list of ModuleInfos that are not contained within any ModuleInfoGroup.
Declaration
protected IEnumerable<ModuleInfo> GrouplessModules { get; }
Property Value
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<ModuleInfo> | The groupless modules. |
Groups
Gets the ModuleInfoGroups that have been added to the ModuleCatalog.
Declaration
public IEnumerable<ModuleInfoGroup> Groups { get; }
Property Value
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<ModuleInfoGroup> | The groups. |
Items
Gets the items in the ModuleCatalog. This property is mainly used to add ModuleInfoGroups or ModuleInfos through XAML.
Declaration
public Collection<IModuleCatalogItem> Items { get; }
Property Value
Type | Description |
---|---|
System.Collections.ObjectModel.Collection<IModuleCatalogItem> | The items in the catalog. |
Modules
Gets all the ModuleInfo classes that are in the ModuleCatalog, regardless if they are within a ModuleInfoGroup or not.
Declaration
public virtual IEnumerable<ModuleInfo> Modules { get; }
Property Value
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<ModuleInfo> | The modules. |
Validated
Gets or sets a value that remembers whether the ModuleCatalog has been validated already.
Declaration
protected bool Validated { get; set; }
Property Value
Type | Description |
---|---|
System.Boolean |
Methods
View SourceAddGroup(InitializationMode, String, ModuleInfo[])
Creates and adds a ModuleInfoGroup to the catalog.
Declaration
public virtual ModuleCatalog AddGroup(InitializationMode initializationMode, string refValue, params ModuleInfo[] moduleInfos)
Parameters
Type | Name | Description |
---|---|---|
InitializationMode | initializationMode | Stage on which the module group to be added will be initialized. |
System.String | refValue | Reference to the location of the module group to be added. |
ModuleInfo[] | moduleInfos | Collection of ModuleInfo included in the group. |
Returns
Type | Description |
---|---|
ModuleCatalog | ModuleCatalog with the added module group. |
AddModule(ModuleInfo)
Adds a ModuleInfo to the ModuleCatalog.
Declaration
public virtual void AddModule(ModuleInfo moduleInfo)
Parameters
Type | Name | Description |
---|---|---|
ModuleInfo | moduleInfo | The ModuleInfo to add. |
AddModule(String, String, InitializationMode, String[])
Adds a groupless ModuleInfo to the catalog.
Declaration
public ModuleCatalog AddModule(string moduleName, string moduleType, InitializationMode initializationMode, params string[] dependsOn)
Parameters
Type | Name | Description |
---|---|---|
System.String | moduleName | Name of the module to be added. |
System.String | moduleType | System.Type of the module to be added. |
InitializationMode | initializationMode | Stage on which the module to be added will be initialized. |
System.String[] | dependsOn | Collection of module names (ModuleName) of the modules on which the module to be added logically depends on. |
Returns
Type | Description |
---|---|
ModuleCatalog | The same ModuleCatalog instance with the added module. |
AddModule(String, String, String, InitializationMode, String[])
Adds a groupless ModuleInfo to the catalog.
Declaration
public ModuleCatalog AddModule(string moduleName, string moduleType, string refValue, InitializationMode initializationMode, params string[] dependsOn)
Parameters
Type | Name | Description |
---|---|---|
System.String | moduleName | Name of the module to be added. |
System.String | moduleType | System.Type of the module to be added. |
System.String | refValue | Reference to the location of the module to be added assembly. |
InitializationMode | initializationMode | Stage on which the module to be added will be initialized. |
System.String[] | dependsOn | Collection of module names (ModuleName) of the modules on which the module to be added logically depends on. |
Returns
Type | Description |
---|---|
ModuleCatalog | The same ModuleCatalog instance with the added module. |
AddModule(String, String, String[])
Adds a groupless ModuleInfo to the catalog.
Declaration
public ModuleCatalog AddModule(string moduleName, string moduleType, params string[] dependsOn)
Parameters
Type | Name | Description |
---|---|---|
System.String | moduleName | Name of the module to be added. |
System.String | moduleType | System.Type of the module to be added. |
System.String[] | dependsOn | Collection of module names (ModuleName) of the modules on which the module to be added logically depends on. |
Returns
Type | Description |
---|---|
ModuleCatalog | The same ModuleCatalog instance with the added module. |
AddModule(Type, InitializationMode, String[])
Adds a groupless ModuleInfo to the catalog.
Declaration
public ModuleCatalog AddModule(Type moduleType, InitializationMode initializationMode, params string[] dependsOn)
Parameters
Type | Name | Description |
---|---|---|
System.Type | moduleType | System.Type of the module to be added. |
InitializationMode | initializationMode | Stage on which the module to be added will be initialized. |
System.String[] | dependsOn | Collection of module names (ModuleName) of the modules on which the module to be added logically depends on. |
Returns
Type | Description |
---|---|
ModuleCatalog | The same ModuleCatalog instance with the added module. |
AddModule(Type, String[])
Adds a groupless ModuleInfo to the catalog.
Declaration
public ModuleCatalog AddModule(Type moduleType, params string[] dependsOn)
Parameters
Type | Name | Description |
---|---|---|
System.Type | moduleType | System.Type of the module to be added. |
System.String[] | dependsOn | Collection of module names (ModuleName) of the modules on which the module to be added logically depends on. |
Returns
Type | Description |
---|---|
ModuleCatalog | The same ModuleCatalog instance with the added module. |
CompleteListWithDependencies(IEnumerable<ModuleInfo>)
Returns a list of ModuleInfos that contain both the ModuleInfos in
modules
, but also all the modules they depend on.
Declaration
public virtual IEnumerable<ModuleInfo> CompleteListWithDependencies(IEnumerable<ModuleInfo> modules)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IEnumerable<ModuleInfo> | modules | The modules to get the dependencies for. |
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<ModuleInfo> | A list of ModuleInfo that contains both all ModuleInfos in |
CreateFromXaml(Stream)
Creates a ModuleCatalog from XAML.
Declaration
public static ModuleCatalog CreateFromXaml(Stream xamlStream)
Parameters
Type | Name | Description |
---|---|---|
System.IO.Stream | xamlStream | System.IO.Stream that contains the XAML declaration of the catalog. |
Returns
Type | Description |
---|---|
ModuleCatalog | An instance of ModuleCatalog built from the XAML. |
CreateFromXaml(Uri)
Creates a ModuleCatalog from a XAML included as an Application Resource.
Declaration
public static ModuleCatalog CreateFromXaml(Uri builderResourceUri)
Parameters
Type | Name | Description |
---|---|---|
System.Uri | builderResourceUri | Relative System.Uri that identifies the XAML included as an Application Resource. |
Returns
Type | Description |
---|---|
ModuleCatalog | An instance of ModuleCatalog build from the XAML. |
EnsureCatalogValidated()
Ensures that the catalog is validated.
Declaration
protected virtual void EnsureCatalogValidated()
GetDependentModules(ModuleInfo)
Return the list of ModuleInfos that moduleInfo
depends on.
Declaration
public virtual IEnumerable<ModuleInfo> GetDependentModules(ModuleInfo moduleInfo)
Parameters
Type | Name | Description |
---|---|---|
ModuleInfo | moduleInfo | The ModuleInfo to get the |
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<ModuleInfo> | An enumeration of ModuleInfo that |
Remarks
If the ModuleCatalog was not yet validated, this method will call Validate().
GetDependentModulesInner(ModuleInfo)
Returns the ModuleInfo on which the received module dependens on.
Declaration
protected virtual IEnumerable<ModuleInfo> GetDependentModulesInner(ModuleInfo moduleInfo)
Parameters
Type | Name | Description |
---|---|---|
ModuleInfo | moduleInfo | Module whose dependant modules are requested. |
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<ModuleInfo> | Collection of ModuleInfo dependants of |
Initialize()
Initializes the catalog, which may load and validate the modules.
Declaration
public virtual void Initialize()
Exceptions
Type | Condition |
---|---|
ModularityException | When validation of the ModuleCatalog fails, because this method calls Validate(). |
InnerLoad()
Does the actual work of loading the catalog. The base implementation does nothing.
Declaration
protected virtual void InnerLoad()
Load()
Loads the catalog if necessary.
Declaration
public void Load()
SolveDependencies(IEnumerable<ModuleInfo>)
Checks for cyclic dependencies, by calling the dependency solver.
Declaration
protected static string[] SolveDependencies(IEnumerable<ModuleInfo> modules)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IEnumerable<ModuleInfo> | modules | A list of ModuleInfo. |
Returns
Type | Description |
---|---|
System.String[] |
Sort(IEnumerable<ModuleInfo>)
Sorts a list of ModuleInfos. This method is called by CompleteListWithDependencies(IEnumerable<ModuleInfo>) to return a sorted list.
Declaration
protected virtual IEnumerable<ModuleInfo> Sort(IEnumerable<ModuleInfo> modules)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IEnumerable<ModuleInfo> | modules | The ModuleInfos to sort. |
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<ModuleInfo> | Sorted list of ModuleInfos |
Validate()
Validates the ModuleCatalog.
Declaration
public virtual void Validate()
Exceptions
Type | Condition |
---|---|
ModularityException | When validation of the ModuleCatalog fails. |
ValidateCrossGroupDependencies()
Ensures that there are no dependencies between modules on different groups.
Declaration
protected virtual void ValidateCrossGroupDependencies()
Remarks
A group-less module can only depend on other group-less modules. A module within a group can depend on other modules within the same group and/or on group-less modules.
ValidateDependencies(IEnumerable<ModuleInfo>)
Ensures that all the dependencies within modules
refer to ModuleInfos
within that list.
Declaration
protected static void ValidateDependencies(IEnumerable<ModuleInfo> modules)
Parameters
Type | Name | Description |
---|---|---|
System.Collections.Generic.IEnumerable<ModuleInfo> | modules | The modules to validate modules for. |
Exceptions
Type | Condition |
---|---|
ModularityException | Throws if a ModuleInfo in |
System.ArgumentNullException | Throws if |
ValidateDependenciesInitializationMode()
Ensures that there are no modules marked to be loaded WhenAvailable depending on modules loaded OnDemand
Declaration
protected virtual void ValidateDependenciesInitializationMode()
ValidateDependencyGraph()
Ensures that there are no cyclic dependencies.
Declaration
protected virtual void ValidateDependencyGraph()
ValidateUniqueModules()
Makes sure all modules have an Unique name.
Declaration
protected virtual void ValidateUniqueModules()
Exceptions
Type | Condition |
---|---|
DuplicateModuleException | Thrown if the names of one or more modules are not unique. |