1
1
using System ;
2
2
using System . Collections . Generic ;
3
+ using System . Runtime . InteropServices . ComTypes ;
3
4
using CST . Common . Utils . StateMachineFeature . BaseClasses ;
4
5
using CST . Common . Utils . StateMachineFeature . ViewModel ;
5
6
using Microsoft . AspNetCore . Mvc . ApplicationParts ;
@@ -9,154 +10,114 @@ namespace CST.Common.Utils.StateMachineFeature
9
10
{
10
11
public class StateMachineFeatureBuilder
11
12
{
12
- private readonly IList < IApplicationFeatureProvider > _featureProviders ;
13
- private readonly IServiceCollection _services ;
13
+ protected readonly IMvcCoreBuilder MvcCoreBuilder ;
14
+ protected readonly IServiceCollection Services ;
14
15
15
16
public StateMachineFeatureBuilder ( IServiceCollection services )
16
17
{
17
- _featureProviders = services . AddMvcCore ( ) . PartManager . FeatureProviders ;
18
- _services = services ;
18
+ MvcCoreBuilder = services . AddMvcCore ( ) ;
19
+ Services = services ;
19
20
}
20
21
21
22
public StateMachineFeatureBuilder < T > WithKeyType < T > ( )
22
23
where T : struct , IEquatable < T >
23
24
{
24
- return new StateMachineFeatureBuilder < T > ( _featureProviders , _services ) ;
25
+ return new StateMachineFeatureBuilder < T > ( Services ) ;
25
26
}
26
27
}
27
28
28
- public class StateMachineFeatureBuilder < T1 >
29
+ public class StateMachineFeatureBuilder < T1 > : StateMachineFeatureBuilder
29
30
where T1 : struct , IEquatable < T1 >
30
31
{
31
- private readonly IList < IApplicationFeatureProvider > _featureProviders ;
32
- private readonly IServiceCollection _services ;
33
-
34
- public StateMachineFeatureBuilder (
35
- IList < IApplicationFeatureProvider > featureProviders ,
36
- IServiceCollection services )
32
+ public StateMachineFeatureBuilder ( IServiceCollection services ) : base ( services )
37
33
{
38
- _featureProviders = featureProviders ;
39
- _services = services ;
40
34
}
41
35
42
36
public StateMachineFeatureBuilder < T1 , T > WithGraphEnumType < T > ( )
43
37
where T : struct , IConvertible
44
38
{
45
- return new StateMachineFeatureBuilder < T1 , T > ( _featureProviders , _services ) ;
39
+ return new StateMachineFeatureBuilder < T1 , T > ( Services ) ;
46
40
}
47
41
}
48
42
49
- public class StateMachineFeatureBuilder < T1 , T2 >
43
+ public class StateMachineFeatureBuilder < T1 , T2 > : StateMachineFeatureBuilder < T1 >
50
44
where T1 : struct , IEquatable < T1 >
51
45
where T2 : struct , IConvertible
52
46
{
53
- private readonly IList < IApplicationFeatureProvider > _featureProviders ;
54
- private readonly IServiceCollection _services ;
55
-
56
- public StateMachineFeatureBuilder (
57
- IList < IApplicationFeatureProvider > featureProviders ,
58
- IServiceCollection services )
47
+ public StateMachineFeatureBuilder ( IServiceCollection services ) : base ( services )
59
48
{
60
- _featureProviders = featureProviders ;
61
- _services = services ;
62
49
}
63
50
64
51
public StateMachineFeatureBuilder < T1 , T2 , T > WithVertexEnumType < T > ( )
65
52
where T : struct , IConvertible
66
53
{
67
- return new StateMachineFeatureBuilder < T1 , T2 , T > ( _featureProviders , _services ) ;
54
+ return new StateMachineFeatureBuilder < T1 , T2 , T > ( Services ) ;
68
55
}
69
56
}
70
57
71
- public class StateMachineFeatureBuilder < T1 , T2 , T3 >
58
+ public class StateMachineFeatureBuilder < T1 , T2 , T3 > : StateMachineFeatureBuilder < T1 , T2 >
72
59
where T1 : struct , IEquatable < T1 >
73
60
where T2 : struct , IConvertible
74
61
where T3 : struct , IConvertible
75
62
{
76
- private readonly IList < IApplicationFeatureProvider > _featureProviders ;
77
- private readonly IServiceCollection _services ;
78
-
79
- public StateMachineFeatureBuilder (
80
- IList < IApplicationFeatureProvider > featureProviders ,
81
- IServiceCollection services )
63
+ public StateMachineFeatureBuilder ( IServiceCollection services ) : base ( services )
82
64
{
83
- _featureProviders = featureProviders ;
84
- _services = services ;
85
65
}
86
66
87
- public StateMachineFeatureBuilder < T1 , T2 , T3 , T > WithSubjectType < T > ( )
67
+ public StateMachineFeatureBuilder < T1 , T2 , T3 , T > WithSubjectType < T > ( string controllerName )
88
68
where T : StateMachineSubject < T1 , T2 , T3 , T > , new ( )
89
69
{
90
- return new StateMachineFeatureBuilder < T1 , T2 , T3 , T > ( _featureProviders , _services ) ;
70
+ return new StateMachineFeatureBuilder < T1 , T2 , T3 , T > ( Services , controllerName ) ;
91
71
}
92
72
}
93
73
94
- public class StateMachineFeatureBuilder < T1 , T2 , T3 , T4 >
74
+ public class StateMachineFeatureBuilder < T1 , T2 , T3 , T4 > : StateMachineFeatureBuilder < T1 , T2 , T3 >
95
75
where T1 : struct , IEquatable < T1 >
96
76
where T2 : struct , IConvertible
97
77
where T3 : struct , IConvertible
98
78
where T4 : StateMachineSubject < T1 , T2 , T3 , T4 > , new ( )
99
79
{
100
- private readonly IList < IApplicationFeatureProvider > _featureProviders ;
101
- private readonly IServiceCollection _services ;
102
-
103
- public StateMachineFeatureBuilder (
104
- IList < IApplicationFeatureProvider > featureProviders ,
105
- IServiceCollection services )
80
+ protected readonly string SubjectControllerName ;
81
+ public StateMachineFeatureBuilder ( IServiceCollection services , string subjectControllerName ) : base ( services )
106
82
{
107
- _featureProviders = featureProviders ;
108
- _services = services ;
83
+ SubjectControllerName = subjectControllerName ;
109
84
}
110
85
111
86
public StateMachineFeatureBuilder < T1 , T2 , T3 , T4 , T > WithRepositoryType < T > ( )
112
87
where T : BaseStateMachineRepository < T1 , T2 , T3 , T4 >
113
88
{
114
- return new StateMachineFeatureBuilder < T1 , T2 , T3 , T4 , T > ( _featureProviders , _services ) ;
89
+ return new StateMachineFeatureBuilder < T1 , T2 , T3 , T4 , T > ( Services , SubjectControllerName ) ;
115
90
}
116
91
}
117
92
118
- public class StateMachineFeatureBuilder < T1 , T2 , T3 , T4 , T5 >
93
+ public class StateMachineFeatureBuilder < T1 , T2 , T3 , T4 , T5 > : StateMachineFeatureBuilder < T1 , T2 , T3 , T4 >
119
94
where T1 : struct , IEquatable < T1 >
120
95
where T2 : struct , IConvertible
121
96
where T3 : struct , IConvertible
122
97
where T4 : StateMachineSubject < T1 , T2 , T3 , T4 > , new ( )
123
98
where T5 : BaseStateMachineRepository < T1 , T2 , T3 , T4 >
124
99
{
125
- private readonly IList < IApplicationFeatureProvider > _featureProviders ;
126
- private readonly IServiceCollection _services ;
127
-
128
- public StateMachineFeatureBuilder (
129
- IList < IApplicationFeatureProvider > featureProviders ,
130
- IServiceCollection services )
100
+ public StateMachineFeatureBuilder ( IServiceCollection services , string subjectControllerName ) : base ( services , subjectControllerName )
131
101
{
132
- _featureProviders = featureProviders ;
133
- _services = services ;
134
102
}
135
103
136
104
public StateMachineFeatureBuilder < T1 , T2 , T3 , T4 , T5 , T > WithStateMachineService < T > ( )
137
105
where T : BaseStateMachineService < T1 , T2 , T3 , T4 , T5 >
138
106
{
139
- return new StateMachineFeatureBuilder < T1 , T2 , T3 , T4 , T5 , T > ( _featureProviders , _services ) ;
107
+ return new StateMachineFeatureBuilder < T1 , T2 , T3 , T4 , T5 , T > ( Services , SubjectControllerName ) ;
140
108
}
141
109
}
142
110
143
- public class StateMachineFeatureBuilder < T1 , T2 , T3 , T4 , T5 , T6 >
111
+ public class StateMachineFeatureBuilder < T1 , T2 , T3 , T4 , T5 , T6 > : StateMachineFeatureBuilder < T1 , T2 , T3 , T4 , T5 >
144
112
where T1 : struct , IEquatable < T1 >
145
113
where T2 : struct , IConvertible
146
114
where T3 : struct , IConvertible
147
115
where T4 : StateMachineSubject < T1 , T2 , T3 , T4 > , new ( )
148
116
where T5 : BaseStateMachineRepository < T1 , T2 , T3 , T4 >
149
117
where T6 : BaseStateMachineService < T1 , T2 , T3 , T4 , T5 >
150
118
{
151
- private readonly IList < IApplicationFeatureProvider > _featureProviders ;
152
- private readonly IServiceCollection _services ;
153
-
154
- public StateMachineFeatureBuilder (
155
- IList < IApplicationFeatureProvider > featureProviders ,
156
- IServiceCollection services )
119
+ public StateMachineFeatureBuilder ( IServiceCollection services , string subjectControllerName ) : base ( services , subjectControllerName )
157
120
{
158
- _featureProviders = featureProviders ;
159
- _services = services ;
160
121
}
161
122
162
123
public void Build ( )
@@ -169,24 +130,28 @@ public void Build()
169
130
170
131
private void AddFeatureProvider ( )
171
132
{
172
- _featureProviders . Add ( new StateMachineFeatureProvider < T1 > ( ) ) ;
133
+ MvcCoreBuilder . PartManager . FeatureProviders . Add ( new StateMachineFeatureProvider < T1 , T4 > ( ) ) ;
173
134
}
174
135
175
136
private void AddStateMachineRepository ( )
176
137
{
177
- _services . AddScoped < T5 > ( ) ;
178
- _services . AddScoped < BaseStateMachineRepository < T1 , T2 , T3 , T4 > > ( ( svc ) => svc . GetService < T5 > ( ) ) ;
138
+ Services . AddScoped < T5 > ( ) ;
139
+ Services . AddScoped < BaseStateMachineRepository < T1 , T2 , T3 , T4 > > ( ( svc ) => svc . GetService < T5 > ( ) ) ;
179
140
}
180
141
181
142
private void AddStateMachineMetaService ( )
182
143
{
183
- _services . AddScoped < IStateMachineMetaService < T1 > , StateMachineMetaService < T1 , T2 , T3 , T5 , T4 > > ( ) ;
144
+ Services . AddScoped < IStateMachineMetaService < T1 > , StateMachineMetaService < T1 , T2 , T3 , T5 , T4 > > ( ) ;
145
+ MvcCoreBuilder . AddMvcOptions ( o =>
146
+ {
147
+ o . Conventions . Add ( new StateMachineControllerNameConvention < T1 , T4 > ( SubjectControllerName ) ) ;
148
+ } ) ;
184
149
}
185
150
186
151
private void AddStateMachineService ( )
187
152
{
188
- _services . AddScoped < T6 > ( ) ;
189
- _services . AddScoped < BaseStateMachineService < T1 , T2 , T3 , T4 , T5 > > (
153
+ Services . AddScoped < T6 > ( ) ;
154
+ Services . AddScoped < BaseStateMachineService < T1 , T2 , T3 , T4 , T5 > > (
190
155
serviceProvider => serviceProvider . GetRequiredService < T6 > ( ) ) ;
191
156
}
192
157
}
0 commit comments