mirror of https://github.com/abpframework/abp.git
10 changed files with 229 additions and 0 deletions
@ -0,0 +1,59 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Collections.Immutable; |
|||
using JetBrains.Annotations; |
|||
|
|||
namespace Volo.Abp.ObjectExtending |
|||
{ |
|||
public class ModuleEntityObjectExtensionConfiguration |
|||
{ |
|||
[NotNull] |
|||
protected Dictionary<string, ModuleEntityObjectPropertyExtensionConfiguration> Properties { get; } |
|||
|
|||
[NotNull] |
|||
public List<Action<ObjectExtensionValidationContext>> Validators { get; } |
|||
|
|||
public ModuleEntityObjectExtensionConfiguration() |
|||
{ |
|||
Properties = new Dictionary<string, ModuleEntityObjectPropertyExtensionConfiguration>(); |
|||
Validators = new List<Action<ObjectExtensionValidationContext>>(); |
|||
} |
|||
|
|||
[NotNull] |
|||
public virtual ModuleEntityObjectExtensionConfiguration AddOrUpdateProperty<TProperty>( |
|||
[NotNull] string propertyName, |
|||
[CanBeNull] Action<ModuleEntityObjectPropertyExtensionConfiguration> configureAction = null) |
|||
{ |
|||
return AddOrUpdateProperty( |
|||
typeof(TProperty), |
|||
propertyName, |
|||
configureAction |
|||
); |
|||
} |
|||
|
|||
[NotNull] |
|||
public virtual ModuleEntityObjectExtensionConfiguration AddOrUpdateProperty( |
|||
[NotNull] Type propertyType, |
|||
[NotNull] string propertyName, |
|||
[CanBeNull] Action<ModuleEntityObjectPropertyExtensionConfiguration> configureAction = null) |
|||
{ |
|||
Check.NotNull(propertyType, nameof(propertyType)); |
|||
Check.NotNull(propertyName, nameof(propertyName)); |
|||
|
|||
var propertyInfo = Properties.GetOrAdd( |
|||
propertyName, |
|||
() => new ModuleEntityObjectPropertyExtensionConfiguration(this, propertyType, propertyName) |
|||
); |
|||
|
|||
configureAction?.Invoke(propertyInfo); |
|||
|
|||
return this; |
|||
} |
|||
|
|||
[NotNull] |
|||
public virtual ImmutableList<ModuleEntityObjectPropertyExtensionConfiguration> GetProperties() |
|||
{ |
|||
return Properties.Values.ToImmutableList(); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,56 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using JetBrains.Annotations; |
|||
using Volo.Abp.Localization; |
|||
|
|||
namespace Volo.Abp.ObjectExtending |
|||
{ |
|||
public class ModuleEntityObjectPropertyExtensionConfiguration |
|||
{ |
|||
[NotNull] |
|||
public ModuleEntityObjectExtensionConfiguration EntityObjectExtensionConfiguration { get; } |
|||
|
|||
[NotNull] |
|||
public string Name { get; } |
|||
|
|||
[NotNull] |
|||
public Type Type { get; } |
|||
|
|||
[NotNull] |
|||
public List<Attribute> Attributes { get; } |
|||
|
|||
[NotNull] |
|||
public List<Action<ObjectExtensionPropertyValidationContext>> Validators { get; } |
|||
|
|||
[NotNull] |
|||
public ILocalizableString DisplayName |
|||
{ |
|||
get => _displayName; |
|||
set |
|||
{ |
|||
Check.NotNull(value, nameof(value)); |
|||
_displayName = value; |
|||
} |
|||
} |
|||
private ILocalizableString _displayName; |
|||
|
|||
[NotNull] |
|||
public Dictionary<object, object> Configuration { get; } |
|||
|
|||
public ModuleEntityObjectPropertyExtensionConfiguration( |
|||
[NotNull] ModuleEntityObjectExtensionConfiguration entityObjectExtensionConfiguration, |
|||
[NotNull] Type type, |
|||
[NotNull] string name) |
|||
{ |
|||
EntityObjectExtensionConfiguration = Check.NotNull(entityObjectExtensionConfiguration, nameof(entityObjectExtensionConfiguration)); |
|||
Type = Check.NotNull(type, nameof(type)); |
|||
Name = Check.NotNull(name, nameof(name)); |
|||
|
|||
DisplayName = new FixedLocalizableString(Name); |
|||
|
|||
Configuration = new Dictionary<object, object>(); |
|||
Attributes = new List<Attribute>(); |
|||
Validators = new List<Action<ObjectExtensionPropertyValidationContext>>(); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
using System.Collections.Generic; |
|||
|
|||
namespace Volo.Abp.ObjectExtending |
|||
{ |
|||
public class ModuleObjectExtensionConfiguration : Dictionary<string, object> |
|||
{ |
|||
|
|||
} |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
using System.Collections.Generic; |
|||
|
|||
namespace Volo.Abp.ObjectExtending |
|||
{ |
|||
public class ModuleObjectExtensionConfigurationDictionary : Dictionary<string, object> |
|||
{ |
|||
|
|||
} |
|||
} |
|||
@ -0,0 +1,28 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using JetBrains.Annotations; |
|||
|
|||
namespace Volo.Abp.ObjectExtending |
|||
{ |
|||
public static class ModuleObjectExtensionConfigurationDictionaryExtensions |
|||
{ |
|||
public static ModuleObjectExtensionConfigurationDictionary ConfigureModule<T>( |
|||
[NotNull] this ModuleObjectExtensionConfigurationDictionary configurationDictionary, |
|||
[NotNull] string moduleName, |
|||
[NotNull] Action<T> configureAction) |
|||
where T : ModuleObjectExtensionConfiguration, new() |
|||
{ |
|||
Check.NotNull(moduleName, nameof(moduleName)); |
|||
Check.NotNull(configureAction, nameof(configureAction)); |
|||
|
|||
configureAction( |
|||
(T)configurationDictionary.GetOrAdd( |
|||
moduleName, |
|||
() => new T() |
|||
) |
|||
); |
|||
|
|||
return configurationDictionary; |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,24 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
|
|||
namespace Volo.Abp.ObjectExtending |
|||
{ |
|||
public static class ModuleObjectExtensionConfigurationExtensions |
|||
{ |
|||
public static T ConfigureObject<T>( |
|||
this T objectConfiguration, |
|||
string objectName, |
|||
Action<ModuleEntityObjectExtensionConfiguration> configureAction) |
|||
where T : ModuleObjectExtensionConfiguration |
|||
{ |
|||
var configuration = objectConfiguration.GetOrAdd( |
|||
objectName, |
|||
() => new ModuleEntityObjectExtensionConfiguration() |
|||
) as ModuleEntityObjectExtensionConfiguration; |
|||
|
|||
configureAction(configuration); |
|||
|
|||
return objectConfiguration; |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,7 @@ |
|||
namespace Volo.Abp.ObjectExtending |
|||
{ |
|||
public class IdentityModuleObjectExtensionConfiguration : ModuleObjectExtensionConfiguration |
|||
{ |
|||
|
|||
} |
|||
} |
|||
@ -0,0 +1,17 @@ |
|||
using System; |
|||
|
|||
namespace Volo.Abp.ObjectExtending |
|||
{ |
|||
public static class IdentityModuleObjectExtensionConfigurationExtensions |
|||
{ |
|||
public static IdentityModuleObjectExtensionConfiguration ConfigureUser( |
|||
this IdentityModuleObjectExtensionConfiguration configurations, |
|||
Action<ModuleEntityObjectExtensionConfiguration> configureAction) |
|||
{ |
|||
return configurations.ConfigureEntity( |
|||
"User", |
|||
configureAction |
|||
); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,17 @@ |
|||
using System; |
|||
|
|||
namespace Volo.Abp.ObjectExtending |
|||
{ |
|||
public static class IdentityModuleObjectExtensionConfigurationsExtensions |
|||
{ |
|||
public static ModuleObjectExtensionConfigurationDictionary ConfigureIdentity( |
|||
this ModuleObjectExtensionConfigurationDictionary modules, |
|||
Action<IdentityModuleObjectExtensionConfiguration> configureAction) |
|||
{ |
|||
return modules.ConfigureModule( |
|||
"Identity", |
|||
configureAction |
|||
); |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue