T1.Standard
1.0.83
See the version list below for details.
dotnet add package T1.Standard --version 1.0.83
NuGet\Install-Package T1.Standard -Version 1.0.83
<PackageReference Include="T1.Standard" Version="1.0.83" />
paket add T1.Standard --version 1.0.83
#r "nuget: T1.Standard, 1.0.83"
// Install T1.Standard as a Cake Addin #addin nuget:?package=T1.Standard&version=1.0.83 // Install T1.Standard as a Cake Tool #tool nuget:?package=T1.Standard&version=1.0.83
Release Notes: https://mr-brain.github.io/categories/t1-standard/
T1.Standard.Common
MethodCache
Using this method, you can easily add caching functionality to any method:
public class YourService
{
private readonly MethodCache _cache;
public YourService()
{
_cache = new MethodCache(defaultCacheDuration: TimeSpan.FromMinutes(5));
}
public async Task<UserInfo> GetUserInfoAsync(string userId)
{
// Original Implementation…
}
public Task<UserInfo> GetUserInfoWithCacheAsync(string userId)
{
return _cache.WithCacheAsync(
() => GetUserInfoAsync(userId),
cacheKey: $"GetUserInfoAsync:{userId}"
);
}
}
The advantages of this implementation include:
- Highly reusable - MethodCache can be used with any class and method.
- Flexibility - Different cache expiration times can be specified for each method call.
- Type-safe - Generics ensure type safety.
- Simplicity - No need to create specific wrapper methods for every method that needs caching.
T1.Standard.Data.SqlBuilders
MssqlBuilder
Generate Insert T-SQL statement string
var sqlBuilder = new MssqlBuilder();
var tableInfo = sqlBuilder.GetTableInfo(typeof(CustomerEntity));
var sqlCode = sqlBuilder.CreateInsertStatement(tableInfo);
T1.Standard.Collections.TreeBuilder
ReduceTree
Universal way to convert List of items to Tree, Build the tree as completely as possible
var userList = new[]
{
new MyUser { Path = "", Name = "A1" },
new MyUser { Path = "", Name = "A2" },
new MyUser { Path = "demo", Name = "B1" }
};
var actual = _treeBuilder.ReduceTree(userList,
x => x.Path,
x => _treeBuilder.GetParentPath(x),
x => _treeBuilder.QueryParentPaths(x.Path)
).ToList();
var expected = new List<TreeBuilder.TreeItem<MyUser, string>>
{
new TreeBuilder.TreeItem<MyUser, string>()
{
Id = "",
ParentId = null,
Item = new MyUser {Path = "", Name = "A1"},
Children = new List<TreeBuilder.TreeItem<MyUser, string>>()
},
new TreeBuilder.TreeItem<MyUser, string>()
{
Id = "",
ParentId = null,
Item = new MyUser {Path = "", Name = "A2"},
Children = new List<TreeBuilder.TreeItem<MyUser, string>>()
},
new TreeBuilder.TreeItem<MyUser, string>()
{
Id = "demo",
ParentId = null,
Item = new MyUser {Path = "demo", Name = "B1"},
Children = new List<TreeBuilder.TreeItem<MyUser, string>>()
},
};
expected.ToExpectedObject().ShouldEqual(actual);
GenerateTree
This will only create a fully structured tree
var userList = new[]
{
new MyUser {Path = "", Name = "A1"},
new MyUser {Path = "demo/name", Name = "C1"},
};
var actual = _treeBuilder.GenerateTree(userList,
x => x.Path,
x => _treeBuilder.GetParentPath(x.Path)
).ToList();
var expected = new List<TreeBuilder.TreeItem<MyUser, string>>
{
new TreeBuilder.TreeItem<MyUser, string>()
{
Id = "",
ParentId = null,
Item = new MyUser {Path = "", Name = "A1"},
Children = new List<TreeBuilder.TreeItem<MyUser, string>>()
},
};
expected.ToExpectedObject().ShouldEqual(actual);
string/object Dictionary List to DataTable Sample
var dictList = new List<Dictionary<string, object>> {
new Dictionary<string, object>
{
{"Id", 1},
{"Name", "Jack"},
{"Birth", DateTime.Parse("2022-05-01")}
},
new Dictionary<string, object>
{
{"Id", 2},
{"Name", "Flash"},
{"Birth", DateTime.Parse("2022-05-01")}
}
};
var datatable = dictList.ToDataTable();
string/object Dictionary List Deep to DataTable Sample
var dictList = new List<Dictionary<string, object>> {
new Dictionary<string, object>
{
{"Id", 1},
{"Name", "Jack"},
{"Birth", DateTime.Parse("2022-05-01")},
{"Price", null},
},
new Dictionary<string, object>
{
{"Id", 2},
{"Name", "Flash"},
{"Birth", DateTime.Parse("2022-05-01")},
{"Price", 123m},
{"Home", null},
}
};
var datatable = dictList.DeepToDataTable();
Assert.Equal(typeof(decimal), dt.Columns["Price"]!.DataType);
Assert.Equal(typeof(string), dt.Columns["Home"]!.DataType);
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Castle.Core (>= 4.3.1)
- Microsoft.CSharp (>= 4.5.0)
- Microsoft.Extensions.Caching.Memory (>= 2.1.2)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 3.1.4)
- Microsoft.Extensions.Http (>= 2.1.1)
- Microsoft.Extensions.Localization.Abstractions (>= 1.1.0)
- Microsoft.Extensions.Logging (>= 2.1.1)
- Microsoft.Extensions.Primitives (>= 2.1.1)
- System.ComponentModel (>= 4.3.0)
- System.ComponentModel.Annotations (>= 4.5.0)
- System.Reactive (>= 4.1.5)
- System.Reactive.Core (>= 4.1.5)
- System.Reactive.Interfaces (>= 4.1.5)
- System.Reactive.Linq (>= 4.1.5)
- System.Reactive.Providers (>= 4.1.5)
- System.Runtime.Loader (>= 4.3.0)
- System.Text.Json (>= 4.7.2)
NuGet packages (10)
Showing the top 5 NuGet packages that depend on T1.Standard:
Package | Downloads |
---|---|
FlashElf.ChaosKit.Autofac
Package Description |
|
T1.AspNetCore3
DynamicHub, DefaultRequestResponseLoggingHandler, RawHtmlInjectMiddleware, ProtectFolderMiddleware |
|
FlashElf.ChaosKit
Chaos strategy is a software development strategy based on the chaos model. Its main rule is to always solve the most important problems first. |
|
T1.RedisEx
Package Description |
|
T1.SqlLocalData
windows sqllocaldb tool |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.0.84 | 72 | 12/2/2024 |
1.0.83 | 132 | 11/16/2024 |
1.0.81 | 215 | 8/31/2024 |
1.0.80 | 145 | 8/19/2024 |
1.0.79 | 137 | 8/18/2024 |
1.0.78 | 141 | 6/2/2024 |
1.0.74 | 304 | 4/9/2023 |
1.0.67 | 545 | 2/8/2023 |
1.0.66 | 529 | 8/8/2022 |
1.0.65 | 524 | 6/27/2022 |
1.0.63 | 496 | 6/1/2022 |
1.0.62 | 492 | 5/4/2022 |
1.0.61 | 803 | 4/26/2022 |
1.0.59 | 473 | 4/21/2022 |
1.0.58 | 10,088 | 2/15/2022 |
1.0.57 | 588 | 6/30/2021 |
1.0.54 | 5,663 | 1/17/2021 |
1.0.53 | 700 | 1/12/2021 |
1.0.52 | 1,512 | 12/29/2020 |
1.0.50 | 3,963 | 12/9/2020 |
1.0.49 | 882 | 12/8/2020 |
1.0.45 | 1,189 | 11/18/2020 |
1.0.44 | 466 | 11/15/2020 |
1.0.42 | 524 | 9/3/2020 |
1.0.40 | 571 | 9/2/2020 |
1.0.38 | 4,624 | 9/1/2020 |
1.0.37 | 759 | 8/29/2020 |
1.0.36 | 527 | 8/26/2020 |
1.0.35 | 3,825 | 8/20/2020 |
1.0.33 | 532 | 7/29/2020 |
1.0.32 | 940 | 7/14/2020 |
1.0.31 | 618 | 6/19/2020 |
1.0.30 | 1,317 | 4/29/2020 |
1.0.29 | 565 | 4/5/2020 |
1.0.28 | 558 | 3/30/2020 |
1.0.26 | 553 | 3/27/2020 |
1.0.25 | 517 | 3/20/2020 |
1.0.24 | 870 | 1/31/2020 |
1.0.23 | 673 | 10/31/2019 |
1.0.22 | 582 | 10/12/2019 |
1.0.19 | 742 | 10/8/2019 |
1.0.18 | 547 | 10/5/2019 |
1.0.17 | 732 | 9/28/2019 |
1.0.16 | 573 | 9/11/2019 |
1.0.15 | 585 | 9/8/2019 |
1.0.14 | 640 | 8/22/2019 |
1.0.10 | 603 | 8/18/2019 |
1.0.6 | 601 | 7/27/2019 |
1.0.0 | 698 | 3/16/2019 |
add IsLeft Left on Either