From 1dde0dbe2352bcd29795b704d5fd7c0dc0150fd8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Fri, 24 Apr 2020 17:31:36 +0300 Subject: [PATCH] Added PreDefine and PostDefine methods for the ITemplateDefinitionProvider --- .../TextTemplating/ITemplateDefinitionContext.cs | 6 +++++- .../TextTemplating/ITemplateDefinitionProvider.cs | 4 ++++ .../TextTemplating/TemplateDefinitionContext.cs | 5 +++++ .../TextTemplating/TemplateDefinitionManager.cs | 14 +++++++++++++- .../TextTemplating/TemplateDefinitionProvider.cs | 10 ++++++++++ 5 files changed, 37 insertions(+), 2 deletions(-) diff --git a/framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/ITemplateDefinitionContext.cs b/framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/ITemplateDefinitionContext.cs index 18402f8f9d..515cee74ca 100644 --- a/framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/ITemplateDefinitionContext.cs +++ b/framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/ITemplateDefinitionContext.cs @@ -1,7 +1,11 @@ -namespace Volo.Abp.TextTemplating +using System.Collections.Generic; + +namespace Volo.Abp.TextTemplating { public interface ITemplateDefinitionContext { + IReadOnlyList GetAll(string name); + TemplateDefinition GetOrNull(string name); void Add(params TemplateDefinition[] definitions); diff --git a/framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/ITemplateDefinitionProvider.cs b/framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/ITemplateDefinitionProvider.cs index a9e5155d0c..aeb6a3c2da 100644 --- a/framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/ITemplateDefinitionProvider.cs +++ b/framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/ITemplateDefinitionProvider.cs @@ -2,6 +2,10 @@ { public interface ITemplateDefinitionProvider { + void PreDefine(ITemplateDefinitionContext context); + void Define(ITemplateDefinitionContext context); + + void PostDefine(ITemplateDefinitionContext context); } } \ No newline at end of file diff --git a/framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateDefinitionContext.cs b/framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateDefinitionContext.cs index 59fe7fced1..d0911f21ac 100644 --- a/framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateDefinitionContext.cs +++ b/framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateDefinitionContext.cs @@ -12,6 +12,11 @@ namespace Volo.Abp.TextTemplating TextTemplates = textTemplates; } + public IReadOnlyList GetAll(string name) + { + return TextTemplates.Values.ToImmutableList(); + } + public virtual TemplateDefinition GetOrNull(string name) { return TextTemplates.GetOrDefault(name); diff --git a/framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateDefinitionManager.cs b/framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateDefinitionManager.cs index 657e227e9c..224b220396 100644 --- a/framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateDefinitionManager.cs +++ b/framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateDefinitionManager.cs @@ -62,9 +62,21 @@ namespace Volo.Abp.TextTemplating .Select(p => scope.ServiceProvider.GetRequiredService(p) as ITemplateDefinitionProvider) .ToList(); + var context = new TemplateDefinitionContext(templates); + + foreach (var provider in providers) + { + provider.PreDefine(context); + } + + foreach (var provider in providers) + { + provider.Define(context); + } + foreach (var provider in providers) { - provider.Define(new TemplateDefinitionContext(templates)); + provider.PostDefine(context); } } diff --git a/framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateDefinitionProvider.cs b/framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateDefinitionProvider.cs index 9afc22a8b8..924a6dfdd8 100644 --- a/framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateDefinitionProvider.cs +++ b/framework/src/Volo.Abp.TextTemplating/Volo/Abp/TextTemplating/TemplateDefinitionProvider.cs @@ -4,6 +4,16 @@ namespace Volo.Abp.TextTemplating { public abstract class TemplateDefinitionProvider : ITemplateDefinitionProvider, ITransientDependency { + public virtual void PreDefine(ITemplateDefinitionContext context) + { + + } + public abstract void Define(ITemplateDefinitionContext context); + + public virtual void PostDefine(ITemplateDefinitionContext context) + { + + } } } \ No newline at end of file