Skip to content

Commit 4646e6a

Browse files
committed
Downgraded the library to netstandard2.0 for increased compatibility.
1 parent febe81c commit 4646e6a

5 files changed

Lines changed: 31 additions & 11 deletions

File tree

src/FunctionalStateMachine.CommandRunner/FunctionalStateMachine.CommandRunner.csproj

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,20 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net9.0</TargetFramework>
4+
<TargetFramework>netstandard2.0</TargetFramework>
5+
<LangVersion>latest</LangVersion>
56
<ImplicitUsings>enable</ImplicitUsings>
67
<Nullable>enable</Nullable>
78

89
<!-- Package metadata -->
910
<Description>Command execution framework for FunctionalStateMachine with dependency injection support and source generation</Description>
1011
</PropertyGroup>
1112

12-
<ItemGroup>
13-
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.12" />
14-
</ItemGroup>
13+
<!-- Polyfills for C# 9+ features on netstandard2.0 -->
14+
<ItemGroup>
15+
<PackageReference Include="PolySharp" Version="1.14.1" PrivateAssets="all" />
16+
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="2.0.0" />
17+
</ItemGroup>
1518

1619
<ItemGroup>
1720
<ProjectReference Include="..\FunctionalStateMachine.CommandRunner.Generator\FunctionalStateMachine.CommandRunner.Generator.csproj"

src/FunctionalStateMachine.CommandRunner/ServiceCollectionExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public static IServiceCollection AddCommandRunners<TCommand>(
88
this IServiceCollection services,
99
CommandRunnerOptions? options = null)
1010
{
11-
ArgumentNullException.ThrowIfNull(services);
11+
if (services == null) throw new ArgumentNullException(nameof(services));
1212

1313
var resolvedOptions = options ?? new CommandRunnerOptions();
1414
if (!CommandRunnerRegistry.TryGet<TCommand>(out var registration))
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,18 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net9.0</TargetFramework>
4+
<TargetFramework>netstandard2.0</TargetFramework>
5+
<LangVersion>latest</LangVersion>
56
<ImplicitUsings>enable</ImplicitUsings>
67
<Nullable>enable</Nullable>
78

89
<!-- Package metadata -->
910
<Description>Functional state machine library for .NET with command-based side effects, perfect for actor-model architectures and event sourcing</Description>
1011
</PropertyGroup>
1112

13+
<!-- Polyfills for C# 9+ features on netstandard2.0 -->
14+
<ItemGroup>
15+
<PackageReference Include="PolySharp" Version="1.14.1" PrivateAssets="all" />
16+
</ItemGroup>
17+
1218
</Project>

src/FunctionalStateMachine.Core/StateMachineAnalysis.cs

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -241,10 +241,14 @@ private static void AnalyzeAmbiguousTransitions(
241241
IReadOnlyDictionary<TState, StateMachine<TState, TTrigger, TData, TCommand>.StateDefinition> states,
242242
AnalysisResult result)
243243
{
244-
foreach (var (state, definition) in states)
244+
foreach (var kvp in states)
245245
{
246-
foreach (var (triggerKey, transitions) in definition.Transitions)
246+
var state = kvp.Key;
247+
var definition = kvp.Value;
248+
foreach (var transitionKvp in definition.Transitions)
247249
{
250+
var triggerKey = transitionKvp.Key;
251+
var transitions = transitionKvp.Value;
248252
// Find unguarded transitions
249253
var unguardedTransitions = transitions.Where(t => t.Guard == null).ToList();
250254

@@ -273,10 +277,14 @@ private static void AnalyzeConditionalTransitionTargets(
273277
IReadOnlyDictionary<TState, StateMachine<TState, TTrigger, TData, TCommand>.StateDefinition> states,
274278
AnalysisResult result)
275279
{
276-
foreach (var (state, definition) in states)
280+
foreach (var kvp in states)
277281
{
278-
foreach (var (triggerKey, transitions) in definition.Transitions)
282+
var state = kvp.Key;
283+
var definition = kvp.Value;
284+
foreach (var transitionKvp in definition.Transitions)
279285
{
286+
var triggerKey = transitionKvp.Key;
287+
var transitions = transitionKvp.Value;
280288
foreach (var transition in transitions)
281289
{
282290
var maxTransitionCount = GetMaxTransitionCountPerPath(transition.Steps);
@@ -362,8 +370,10 @@ private static void AnalyzeDeadEndStates(
362370
TState initialState,
363371
AnalysisResult result)
364372
{
365-
foreach (var (state, definition) in states)
373+
foreach (var kvp in states)
366374
{
375+
var state = kvp.Key;
376+
var definition = kvp.Value;
367377
// Skip initial state - it's okay for it to be a dead-end (terminal state)
368378
if (state.Equals(initialState))
369379
continue;

test/FunctionalStateMachine.CommandRunnerTests/FunctionalStateMachine.CommandRunnerTests.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
<ItemGroup>
1111
<PackageReference Include="coverlet.collector" Version="6.0.2"/>
12+
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.0" />
1213
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0"/>
1314
<PackageReference Include="xunit" Version="2.9.2"/>
1415
<PackageReference Include="xunit.runner.visualstudio" Version="2.8.2"/>

0 commit comments

Comments
 (0)