Open.Infra
1.0.9
dotnet add package Open.Infra --version 1.0.9
NuGet\Install-Package Open.Infra -Version 1.0.9
<PackageReference Include="Open.Infra" Version="1.0.9" />
<PackageVersion Include="Open.Infra" Version="1.0.9" />
<PackageReference Include="Open.Infra" />
paket add Open.Infra --version 1.0.9
#r "nuget: Open.Infra, 1.0.9"
#:package Open.Infra@1.0.9
#addin nuget:?package=Open.Infra&version=1.0.9
#tool nuget:?package=Open.Infra&version=1.0.9
Introduce
OpenInfra is an universal infrastructure library designed to provide developers with common and universal basic functional modules, helping to quickly build efficient and reliable applications.
Features
- Automatically handle uncaught exceptions
- You must create logs\crash firstly if you want record crash information.
- Manage services to achieve decoupling
- Application running state support
- Some useful tool classes
Usage
- Call initialize on you app startup.
InfraApp.Instance.Start();
Classes
InfraApp
Initialize
Should be called before all other operations.
Explore
Explore the app directory
Sleep
Sleep special time and return true, if process is closing return false.
Services manager.
Mapping manager for service interfaces to service instances.
API Reference
Load()
Try load service from "services" directory.
Load(IEnumerable<string> files)
Loads service implementations from a DLL and registers them.
This operation should only be executed once when the main program starts.
// Add your service assembly files to a list(You can user your seach logic to make it).
var files = new List<string> { "a.dll", "b.dll", "c.dll" };
// Load assemblies
ServiceManager.Instance.Load(files)
T Singleton<T>()
T Singleton<T>(string name)
Retrieves a singleton instance of the service.
// Get unique log service.
var logService = ServiceManager.Instance.Singleton<ILogService>();
// Get log service or with name
var mainLogService = ServiceManager.Instance.Singleton<ILogService>("main");
T Create<T>()
Creates a new instance of the service.
var service = ServiceManager.Instance.Create<ILogService>();
Debug
Add your own debug information output function if you need.
ServiceManager.Instance.Log = (message) =>
{
Console.WriteLine(message);
};
SafeAction
SafeAction<int> bufferedDelegate = new SafeAction<int>(3);
bufferedDelegate.Invoke(1);
bufferedDelegate += arg => Console.WriteLine($"Execute: {arg}");
bufferedDelegate.Invoke(2);
CacheAction
CacheAction _cacheAction = new CacheAction();
public event Action<string>? UserHandler
{
add
{
if (value != null) return;
_cacheAction.Attach((args) =>
{
value.Invoke((string)args[0]);
});
}
remove {...}
}
public void Execute(string user)
{
_cacheAction.Run(user);
}
DebugHelper
IsDebugMode
- Setting the environment variable DebugMode=true is considered debugging mode
Measure
- Measure function execution time
Directories
- Manage various directories of the program, create subdirectories in the directory where the program is located by default, and redirect to other locations through same name environment variables
string Get(string name)
- Get the full path of the directory with the specified name
SettingBase
- a base class for configuration
static T Load<T>(string filename)
- Loads a configuration instance from xml file, if the file not exist create a default.
- The first instance of the configuration type can be automatically loaded
- The config is suggested to be single instance.
void Save()
- Write the instance to xml, the instance should be created by Load function.
License
Copyright (c) [2025] [OpenCommon]. All rights reserved.
This software is provided "as-is" without any warranties. You may not modify, distribute, or reverse-engineer this software without explicit permission from the author.
| 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. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.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
- Open.Interfaces (>= 1.0.9)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Open.Infra:
| Package | Downloads |
|---|---|
|
Open.Infra.Wpf
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.