@@ -22,38 +22,33 @@ namespace ApiCodeGenerator.OpenApi;
2222public partial class DefaultTemplateFactory : ITemplateFactory
2323{
2424 private const string BASE_TMPL_SUFFIX = ".base" ;
25-
25+ private readonly CodeGeneratorSettingsBase _settings ;
2626 private readonly ITemplateProvider [ ] _providers ;
2727
2828 private readonly InternalTemplateFactory _internalTemplateFactory ;
2929
3030 public DefaultTemplateFactory ( CodeGeneratorSettingsBase settings , params Assembly [ ] assemblies )
31- : this ( settings , CreateProviders ( settings , assemblies ) . ToArray ( ) )
31+ : this ( settings , CreateProviders ( assemblies ) . ToArray ( ) )
3232 {
3333 }
3434
3535 public DefaultTemplateFactory ( CodeGeneratorSettingsBase settings , ITemplateProvider [ ] providers )
3636 {
37+ _settings = settings ;
3738 _providers = providers ;
3839 _internalTemplateFactory = new ( settings , GetLiquidTemplate , GetToolchainVersion ) ;
3940 }
4041
42+ [ Obsolete ( "Use CreateProviders(Assembly[] assemblies)" ) ]
4143 public static IEnumerable < ITemplateProvider > CreateProviders ( CodeGeneratorSettingsBase settings , Assembly [ ] assemblies )
42- {
43- if ( ! string . IsNullOrEmpty ( settings . TemplateDirectory ) )
44- {
45- yield return new DirectoryTemplateProvider ( settings . TemplateDirectory ! ) ;
46- }
44+ => CreateProviders ( assemblies ) ;
4745
48- foreach ( var assembly in assemblies )
49- {
50- yield return new EmbededResourceTemplateProvider ( assembly , $ "{ assembly . GetName ( ) . Name } .Templates") ;
51- }
52- }
46+ public static IEnumerable < ITemplateProvider > CreateProviders ( Assembly [ ] assemblies )
47+ => assemblies . Select ( a => new EmbededResourceTemplateProvider ( a , $ "{ a . GetName ( ) . Name } .Templates") ) ;
5348
5449 public ITemplate CreateTemplate ( string language , string template , object model )
5550 {
56- IEnumerable < ITemplateProvider > providers = _providers ;
51+ IEnumerable < ITemplateProvider > providers = GetProviders ( ) ;
5752 if ( template . EndsWith ( BASE_TMPL_SUFFIX ) )
5853 {
5954 if ( model is Fluid . TemplateContext templateContext )
@@ -78,13 +73,24 @@ public ITemplate CreateTemplate(string language, string template, object model)
7873
7974 private string GetLiquidTemplate ( string language , string name )
8075 {
81- var text = _providers
76+ var text = GetProviders ( )
8277 . Select ( p => p . GetTemplateText ( name . TrimEnd ( '!' ) , language ) )
8378 . FirstOrDefault ( t => t is not null ) ;
8479
8580 return text ?? string . Empty ;
8681 }
8782
83+ private IEnumerable < ITemplateProvider > GetProviders ( )
84+ {
85+ var providers = _providers . AsEnumerable ( ) ;
86+ if ( ! string . IsNullOrEmpty ( _settings . TemplateDirectory ) )
87+ {
88+ providers = providers . Prepend ( new DirectoryTemplateProvider ( _settings . TemplateDirectory ! ) ) ;
89+ }
90+
91+ return providers ;
92+ }
93+
8894 private sealed class InternalTemplateFactory
8995#if ASYNC_API
9096 : NJsonSchema . CodeGeneration . DefaultTemplateFactory
0 commit comments