Skip to content

Commit 7d62018

Browse files
committed
In JavaScriptEngineSwitcher.Extensions.MsDependencyInjection added a overloaded versions of the AddJsEngineSwitcher extension method, which takes an instance of JS engine switcher
1 parent 7cf7ce8 commit 7d62018

File tree

3 files changed

+48
-11
lines changed

3 files changed

+48
-11
lines changed

src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
<Description>JavaScriptEngineSwitcher.Extensions.MsDependencyInjection contains extension methods for adding the JS engine switcher in an `IServiceCollection`.</Description>
1414
<PackageIconUrl>https://raw.githubusercontent.com/Taritsyn/JavaScriptEngineSwitcher/master/Icons/JavaScriptEngineSwitcher_Extensions_MsDependencyInjection_Logo128x128.png</PackageIconUrl>
1515
<PackageTags>JavaScriptEngineSwitcher;JavaScript;ECMAScript;DI</PackageTags>
16-
<PackageReleaseNotes>Added support of .NET Framework 4.7.1.</PackageReleaseNotes>
16+
<PackageReleaseNotes>Added a overloaded versions of the `AddJsEngineSwitcher` extension method, which takes an instance of JS engine switcher.</PackageReleaseNotes>
1717
</PropertyGroup>
1818

1919
<Import Project="../../build/common.props" />

src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/JsEngineSwitcherServiceCollectionExtensions.cs

Lines changed: 45 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,31 +12,62 @@ namespace JavaScriptEngineSwitcher.Extensions.MsDependencyInjection
1212
public static class JsEngineSwitcherServiceCollectionExtensions
1313
{
1414
/// <summary>
15-
/// Adds a JS engine switcher to <see cref="IServiceCollection"/>
15+
/// Adds a default instance of JS engine switcher to <see cref="IServiceCollection"/>
1616
/// </summary>
1717
/// <param name="services">The services available in the application</param>
1818
/// <returns>Instance of <see cref="JsEngineFactoryCollection" /></returns>
1919
public static JsEngineFactoryCollection AddJsEngineSwitcher(this IServiceCollection services)
20+
{
21+
return AddJsEngineSwitcher(services, (IJsEngineSwitcher)null);
22+
}
23+
24+
/// <summary>
25+
/// Adds a specified instance of JS engine switcher to <see cref="IServiceCollection"/>
26+
/// </summary>
27+
/// <param name="services">The services available in the application</param>
28+
/// <param name="engineSwitcher">Instance of JS engine switcher</param>
29+
/// <returns>Instance of <see cref="JsEngineFactoryCollection" /></returns>
30+
public static JsEngineFactoryCollection AddJsEngineSwitcher(this IServiceCollection services,
31+
IJsEngineSwitcher engineSwitcher)
2032
{
2133
if (services == null)
2234
{
2335
throw new ArgumentNullException(nameof(services));
2436
}
2537

26-
IJsEngineSwitcher engineSwitcher = JsEngineSwitcher.Current;
27-
services.AddSingleton(engineSwitcher);
38+
// Set the current instance of JS engine switcher
39+
JsEngineSwitcher.Current = engineSwitcher;
40+
41+
// Get the current instance of JS engine switcher
42+
IJsEngineSwitcher currentEngineSwitcher = JsEngineSwitcher.Current;
43+
44+
// Register the current instance of JS engine switcher as a service
45+
services.AddSingleton(currentEngineSwitcher);
2846

29-
return engineSwitcher.EngineFactories;
47+
return currentEngineSwitcher.EngineFactories;
3048
}
3149

3250
/// <summary>
33-
/// Adds a JS engine switcher to <see cref="IServiceCollection"/>
51+
/// Adds a default instance of JS engine switcher to <see cref="IServiceCollection"/>
3452
/// </summary>
3553
/// <param name="services">The services available in the application</param>
3654
/// <param name="configure">The <see cref="IJsEngineSwitcher"/> which need to be configured</param>
3755
/// <returns>Instance of <see cref="JsEngineFactoryCollection" /></returns>
3856
public static JsEngineFactoryCollection AddJsEngineSwitcher(this IServiceCollection services,
3957
Action<IJsEngineSwitcher> configure)
58+
{
59+
return AddJsEngineSwitcher(services, null, configure);
60+
}
61+
62+
/// <summary>
63+
/// Adds a specified instance of JS engine switcher to <see cref="IServiceCollection"/>
64+
/// </summary>
65+
/// <param name="services">The services available in the application</param>
66+
/// <param name="engineSwitcher">Instance of JS engine switcher</param>
67+
/// <param name="configure">The <see cref="IJsEngineSwitcher"/> which need to be configured</param>
68+
/// <returns>Instance of <see cref="JsEngineFactoryCollection" /></returns>
69+
public static JsEngineFactoryCollection AddJsEngineSwitcher(this IServiceCollection services,
70+
IJsEngineSwitcher engineSwitcher, Action<IJsEngineSwitcher> configure)
4071
{
4172
if (services == null)
4273
{
@@ -48,12 +79,17 @@ public static JsEngineFactoryCollection AddJsEngineSwitcher(this IServiceCollect
4879
throw new ArgumentNullException(nameof(configure));
4980
}
5081

51-
IJsEngineSwitcher engineSwitcher = JsEngineSwitcher.Current;
52-
configure(engineSwitcher);
82+
// Set the current instance of JS engine switcher
83+
JsEngineSwitcher.Current = engineSwitcher;
84+
85+
// Get and configure the current instance of JS engine switcher
86+
IJsEngineSwitcher currentEngineSwitcher = JsEngineSwitcher.Current;
87+
configure(currentEngineSwitcher);
5388

54-
services.AddSingleton(engineSwitcher);
89+
// Register the current instance of JS engine switcher as a service
90+
services.AddSingleton(currentEngineSwitcher);
5591

56-
return engineSwitcher.EngineFactories;
92+
return currentEngineSwitcher.EngineFactories;
5793
}
5894
}
5995
}

src/JavaScriptEngineSwitcher.Extensions.MsDependencyInjection/readme.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
=============
1818
RELEASE NOTES
1919
=============
20-
Added support of .NET Framework 4.7.1.
20+
Added a overloaded versions of the `AddJsEngineSwitcher` extension method, which
21+
takes an instance of JS engine switcher.
2122

2223
=============
2324
DOCUMENTATION

0 commit comments

Comments
 (0)