FeatureDefinitionContextBase.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using Abp.Collections.Extensions;
  2. using Abp.Localization;
  3. using Abp.UI.Inputs;
  4. namespace Abp.Application.Features
  5. {
  6. /// <summary>
  7. /// Base for implementing <see cref="IFeatureDefinitionContext"/>.
  8. /// </summary>
  9. public abstract class FeatureDefinitionContextBase : IFeatureDefinitionContext
  10. {
  11. protected readonly FeatureDictionary Features;
  12. /// <summary>
  13. /// Initializes a new instance of the <see cref="FeatureDefinitionContextBase"/> class.
  14. /// </summary>
  15. protected FeatureDefinitionContextBase()
  16. {
  17. Features = new FeatureDictionary();
  18. }
  19. /// <summary>
  20. /// Creates a new feature.
  21. /// </summary>
  22. /// <param name="name">Unique name of the feature</param>
  23. /// <param name="defaultValue">Default value</param>
  24. /// <param name="displayName">Display name of the feature</param>
  25. /// <param name="description">A brief description for this feature</param>
  26. /// <param name="scope">Feature scope</param>
  27. /// <param name="inputType">Input type</param>
  28. public Feature Create(string name, string defaultValue, ILocalizableString displayName = null,
  29. ILocalizableString description = null, FeatureScopes scope = FeatureScopes.All, IInputType inputType = null)
  30. {
  31. if (Features.ContainsKey(name))
  32. {
  33. throw new AbpException("There is already a feature with name: " + name);
  34. }
  35. var feature = new Feature(name, defaultValue, displayName, description, scope, inputType);
  36. Features[feature.Name] = feature;
  37. return feature;
  38. }
  39. /// <summary>
  40. /// Gets a feature with a given name, or null if can not be found.
  41. /// </summary>
  42. /// <param name="name">Unique name of the feature</param>
  43. /// <returns>
  44. /// <see cref="Feature" /> object or null
  45. /// </returns>
  46. public Feature GetOrNull(string name)
  47. {
  48. return Features.GetOrDefault(name);
  49. }
  50. /// <summary>
  51. /// Remove feature with given name
  52. /// </summary>
  53. /// <param name="name"></param>
  54. public void Remove(string name)
  55. {
  56. Features.Remove(name);
  57. }
  58. }
  59. }