Skip to content

Commit 8cfa6a9

Browse files
committed
Merged PR 4: FeatureBuilder class refactor
FeatureBuilder class refactor Cherry-picked from commit `cf53a3f3`.
2 parents f3dcb56 + 7e16779 commit 8cfa6a9

File tree

2 files changed

+59
-31
lines changed

2 files changed

+59
-31
lines changed

common/common.utils/StateMachineFeature/StateMachineFeatureBuilder.cs

+59-30
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,15 @@ public StateMachineFeatureBuilder(IServiceCollection services)
1717
_featureProviders = services.AddMvcCore().PartManager.FeatureProviders;
1818
_services = services;
1919
}
20-
20+
2121
public StateMachineFeatureBuilder<T> WithKeyType<T>()
2222
where T : struct, IEquatable<T>
2323
{
24-
_featureProviders.Add(new StateMachineFeatureProvider<T>());
2524
return new StateMachineFeatureBuilder<T>(_featureProviders, _services);
2625
}
2726
}
2827

29-
public class StateMachineFeatureBuilder<T1>
28+
public class StateMachineFeatureBuilder<T1>
3029
where T1 : struct, IEquatable<T1>
3130
{
3231
private readonly IList<IApplicationFeatureProvider> _featureProviders;
@@ -43,12 +42,12 @@ public StateMachineFeatureBuilder(
4342
public StateMachineFeatureBuilder<T1, T> WithGraphEnumType<T>()
4443
where T : struct, IConvertible
4544
{
46-
return new StateMachineFeatureBuilder<T1,T>(_featureProviders, _services);
45+
return new StateMachineFeatureBuilder<T1, T>(_featureProviders, _services);
4746
}
4847
}
4948

50-
public class StateMachineFeatureBuilder<T1, T2>
51-
where T1 : struct, IEquatable<T1>
49+
public class StateMachineFeatureBuilder<T1, T2>
50+
where T1 : struct, IEquatable<T1>
5251
where T2 : struct, IConvertible
5352
{
5453
private readonly IList<IApplicationFeatureProvider> _featureProviders;
@@ -61,14 +60,15 @@ public StateMachineFeatureBuilder(
6160
_featureProviders = featureProviders;
6261
_services = services;
6362
}
63+
6464
public StateMachineFeatureBuilder<T1, T2, T> WithVertexEnumType<T>()
6565
where T : struct, IConvertible
6666
{
6767
return new StateMachineFeatureBuilder<T1, T2, T>(_featureProviders, _services);
6868
}
6969
}
7070

71-
public class StateMachineFeatureBuilder<T1, T2, T3>
71+
public class StateMachineFeatureBuilder<T1, T2, T3>
7272
where T1 : struct, IEquatable<T1>
7373
where T2 : struct, IConvertible
7474
where T3 : struct, IConvertible
@@ -83,14 +83,15 @@ public StateMachineFeatureBuilder(
8383
_featureProviders = featureProviders;
8484
_services = services;
8585
}
86+
8687
public StateMachineFeatureBuilder<T1, T2, T3, T> WithSubjectType<T>()
8788
where T : StateMachineSubject<T1, T2, T3, T>, new()
8889
{
89-
return new StateMachineFeatureBuilder<T1,T2,T3,T>(_featureProviders, _services);
90+
return new StateMachineFeatureBuilder<T1, T2, T3, T>(_featureProviders, _services);
9091
}
9192
}
9293

93-
public class StateMachineFeatureBuilder<T1, T2, T3, T4>
94+
public class StateMachineFeatureBuilder<T1, T2, T3, T4>
9495
where T1 : struct, IEquatable<T1>
9596
where T2 : struct, IConvertible
9697
where T3 : struct, IConvertible
@@ -106,20 +107,20 @@ public StateMachineFeatureBuilder(
106107
_featureProviders = featureProviders;
107108
_services = services;
108109
}
109-
public StateMachineFeatureBuilder<T1, T2, T3, T4, T> WithRepositoryType<T>()
110+
111+
public StateMachineFeatureBuilder<T1, T2, T3, T4, T> WithRepositoryType<T>()
110112
where T : BaseStateMachineRepository<T1, T2, T3, T4>
111113
{
112-
_services.AddScoped<T>();
113-
_services.AddScoped<BaseStateMachineRepository<T1, T2, T3, T4>>((svc) => svc.GetService<T>());
114114
return new StateMachineFeatureBuilder<T1, T2, T3, T4, T>(_featureProviders, _services);
115115
}
116116
}
117-
public class StateMachineFeatureBuilder<T1, T2, T3, T4, T5>
118-
where T1 : struct, IEquatable<T1>
119-
where T2 : struct, IConvertible
120-
where T3 : struct, IConvertible
117+
118+
public class StateMachineFeatureBuilder<T1, T2, T3, T4, T5>
119+
where T1 : struct, IEquatable<T1>
120+
where T2 : struct, IConvertible
121+
where T3 : struct, IConvertible
121122
where T4 : StateMachineSubject<T1, T2, T3, T4>, new()
122-
where T5 : BaseStateMachineRepository<T1, T2, T3, T4>
123+
where T5 : BaseStateMachineRepository<T1, T2, T3, T4>
123124
{
124125
private readonly IList<IApplicationFeatureProvider> _featureProviders;
125126
private readonly IServiceCollection _services;
@@ -130,25 +131,22 @@ public StateMachineFeatureBuilder(
130131
{
131132
_featureProviders = featureProviders;
132133
_services = services;
133-
_services.AddScoped<IStateMachineMetaService<T1>, StateMachineMetaService<T1, T2, T3, T5, T4>>();
134134
}
135135

136136
public StateMachineFeatureBuilder<T1, T2, T3, T4, T5, T> WithStateMachineService<T>()
137137
where T : BaseStateMachineService<T1, T2, T3, T4, T5>
138138
{
139-
_services.AddScoped<T>();
140-
_services.AddScoped<BaseStateMachineService<T1, T2, T3, T4, T5>>(
141-
serviceProvider => serviceProvider.GetRequiredService<T>());
142139
return new StateMachineFeatureBuilder<T1, T2, T3, T4, T5, T>(_featureProviders, _services);
143140
}
144-
}
145-
146-
public class StateMachineFeatureBuilder<T1, T2, T3, T4, T5, T6>
147-
where T1 : struct, IEquatable<T1>
148-
where T2 : struct, IConvertible
149-
where T3 : struct, IConvertible
150-
where T4 : StateMachineSubject<T1, T2, T3, T4>
151-
where T5 : BaseStateMachineRepository<T1, T2, T3, T4>
141+
}
142+
143+
public class StateMachineFeatureBuilder<T1, T2, T3, T4, T5, T6>
144+
where T1 : struct, IEquatable<T1>
145+
where T2 : struct, IConvertible
146+
where T3 : struct, IConvertible
147+
where T4 : StateMachineSubject<T1, T2, T3, T4>, new()
148+
where T5 : BaseStateMachineRepository<T1, T2, T3, T4>
149+
where T6 : BaseStateMachineService<T1, T2, T3, T4, T5>
152150
{
153151
private readonly IList<IApplicationFeatureProvider> _featureProviders;
154152
private readonly IServiceCollection _services;
@@ -160,5 +158,36 @@ public StateMachineFeatureBuilder(
160158
_featureProviders = featureProviders;
161159
_services = services;
162160
}
163-
}
161+
162+
public void Build()
163+
{
164+
AddFeatureProvider();
165+
AddStateMachineRepository();
166+
AddStateMachineMetaService();
167+
AddStateMachineService();
168+
}
169+
170+
private void AddFeatureProvider()
171+
{
172+
_featureProviders.Add(new StateMachineFeatureProvider<T1>());
173+
}
174+
175+
private void AddStateMachineRepository()
176+
{
177+
_services.AddScoped<T5>();
178+
_services.AddScoped<BaseStateMachineRepository<T1, T2, T3, T4>>((svc) => svc.GetService<T5>());
179+
}
180+
181+
private void AddStateMachineMetaService()
182+
{
183+
_services.AddScoped<IStateMachineMetaService<T1>, StateMachineMetaService<T1, T2, T3, T5, T4>>();
184+
}
185+
186+
private void AddStateMachineService()
187+
{
188+
_services.AddScoped<T6>();
189+
_services.AddScoped<BaseStateMachineService<T1, T2, T3, T4, T5>>(
190+
serviceProvider => serviceProvider.GetRequiredService<T6>());
191+
}
192+
}
164193
}

common/common.utils/StateMachineFeature/StateMachineFeatureExtensions.cs

-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ public static IServiceCollection AddStateMachineFeature(
1313
{
1414
var builder = new StateMachineFeatureBuilder(services);
1515
buildAction(builder);
16-
1716
return services;
1817
}
1918
}

0 commit comments

Comments
 (0)