mirror of https://github.com/abpframework/abp.git
1 changed files with 42 additions and 0 deletions
@ -0,0 +1,42 @@ |
|||
using System.Collections.Generic; |
|||
using Microsoft.Extensions.Options; |
|||
|
|||
namespace Volo.Abp.Options |
|||
{ |
|||
//TODO: Derive from OptionsFactory when this is released: https://github.com/aspnet/Options/pull/258 (or completely remove this!)
|
|||
public class AbpOptionsFactory<TOptions> : IOptionsFactory<TOptions> where TOptions : class, new() |
|||
{ |
|||
private readonly IEnumerable<IConfigureOptions<TOptions>> _setups; |
|||
private readonly IEnumerable<IPostConfigureOptions<TOptions>> _postConfigures; |
|||
|
|||
public AbpOptionsFactory(IEnumerable<IConfigureOptions<TOptions>> setups, IEnumerable<IPostConfigureOptions<TOptions>> postConfigures) |
|||
{ |
|||
_setups = setups; |
|||
_postConfigures = postConfigures; |
|||
} |
|||
|
|||
public virtual TOptions Create(string name) |
|||
{ |
|||
var options = new TOptions(); |
|||
|
|||
foreach (var setup in _setups) |
|||
{ |
|||
if (setup is IConfigureNamedOptions<TOptions> namedSetup) |
|||
{ |
|||
namedSetup.Configure(name, options); |
|||
} |
|||
else if (name == Microsoft.Extensions.Options.Options.DefaultName) |
|||
{ |
|||
setup.Configure(options); |
|||
} |
|||
} |
|||
|
|||
foreach (var post in _postConfigures) |
|||
{ |
|||
post.PostConfigure(name, options); |
|||
} |
|||
|
|||
return options; |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue