File tree Expand file tree Collapse file tree
SharpEngine.Core/Data/DataTable Expand file tree Collapse file tree Original file line number Diff line number Diff line change 11using System ;
2+ using System . Collections . Generic ;
23
34namespace SharpEngine . Core . Data . DataTable ;
45
56/// <summary>
67/// Table of Data
78/// </summary>
8- public interface IDataTable
9+ public interface IDataTable < T > where T : class
910{
11+ /// <summary>
12+ /// Add Object
13+ /// </summary>
14+ /// <param name="obj">Object</param>
15+ public void Add ( T obj ) ;
16+
17+ /// <summary>
18+ /// Remove Object
19+ /// </summary>
20+ /// <param name="obj">Object</param>
21+ public void Remove ( T obj ) ;
22+
1023 /// <summary>
1124 /// Get Object
1225 /// </summary>
1326 /// <param name="predicate">Predicate</param>
14- /// <returns>Object </returns>
15- public dynamic ? Get ( Predicate < dynamic ? > predicate ) ;
27+ /// <returns>Objects </returns>
28+ public IEnumerable < T > Get ( Func < T , bool > predicate ) ;
1629}
Original file line number Diff line number Diff line change @@ -10,17 +10,30 @@ namespace SharpEngine.Core.Data.DataTable;
1010/// Json Data Table
1111/// </summary>
1212/// <param name="jsonFile">Json File</param>
13- public class JsonDataTable < T > ( string jsonFile ) : IDataTable
13+ public class JsonDataTable < T > ( string jsonFile ) : IDataTable < T > where T : class
1414{
15- private List < dynamic ? > Objects { get ; } =
16- JsonSerializer
17- . Deserialize < List < T > > ( File . ReadAllText ( jsonFile ) )
18- ? . Select ( x => ( dynamic ? ) x )
19- . ToList ( ) ?? [ ] ;
15+ private List < T > Objects { get ; } = JsonSerializer . Deserialize < List < T > > ( File . ReadAllText ( jsonFile ) ) ? . ToList ( ) ?? [ ] ;
2016
21- /// <inheritdoc />
22- public dynamic ? Get ( Predicate < dynamic ? > predicate )
17+ /// <inheritdoc/>
18+ public void Add ( T obj )
2319 {
24- return Objects . Find ( predicate ) ;
20+ ArgumentNullException . ThrowIfNull ( obj ) ;
21+ Objects . Add ( obj ) ;
22+ File . WriteAllText ( jsonFile , JsonSerializer . Serialize ( Objects ) ) ;
23+ }
24+
25+ /// <inheritdoc/>
26+ public IEnumerable < T > Get ( Func < T , bool > predicate )
27+ {
28+ ArgumentNullException . ThrowIfNull ( predicate ) ;
29+ return Objects . Where ( obj => predicate ( obj ) ) ;
30+ }
31+
32+ /// <inheritdoc/>
33+ public void Remove ( T obj )
34+ {
35+ ArgumentNullException . ThrowIfNull ( obj ) ;
36+ Objects . Remove ( obj ) ;
37+ File . WriteAllText ( jsonFile , JsonSerializer . Serialize ( Objects ) ) ;
2538 }
2639}
You can’t perform that action at this time.
0 commit comments