.NET 配置管理器的替代方案:CliverRoutines

.NET开发中,ConfigurationManager是一个常见的配置管理工具,但使用起来往往不够灵活。为了解决这个问题,开发了CliverRoutines,这是一个基于.NETStandard 2.0的跨平台库,可以在任何采用C#的平台上运行,包括.NET、Xamarin和Mono。本文将简要介绍CliverRoutines的主要特点和使用方法。

每次使用.NETConfigurationManager时,无论是存储自定义类型、初始化长数据设置,还是覆盖设置,尝试让ConfigurationManager做一些自定义操作,都会陷入充满限制的尴尬编码中。更不用说通过Visual Studio设置表编辑设置是多么不便了。这就是为什么多年前开发了设置管理器Cliver.Config。这个想法非常合适,从那时起,就再也没有回头。它已经在Windows和Xamarin.Mac上的许多应用程序中使用,无论复杂程度如何,都证明了它的简单性、能力和鲁棒性。

CliverRoutines

CliverRoutines提供了日志Cliver.Log和一些辅助例程。

Cliver.Config

Cliver.Config是一个应用程序设置管理器,旨在替代.NET的ConfigurationManager

  • 跨平台
  • 支持任何复杂性的设置类型和功能
  • 可以直接在代码中轻松修改设置
  • 支持设置多态性
  • 线程安全
  • 以JSON格式序列化数据

设置类型是普通的C#类,可以根据需要在代码中定义,从而实现极大的灵活性。Cliver.Config自动检测这些类型的字段/属性,并促进它们从磁盘的序列化/反序列化。

在项目中引用CliverRoutines。设置项目公司名称,因为它共同定义了存储目录。根据需要定义设置类型。通常,设置类型是一个普通的类,继承自Cliver.Settings或其衍生类,例如Cliver.UserSettings

在需要的地方,声明一个静态字段或属性,其类型是定义的设置类型:

public class Settings { public static readonly GeneralSettings General; }

在应用程序开始时添加此调用,以使Cliver.Config检测代码中的所有这些字段/属性并初始化它们:

Cliver.Config.Reload();

现在设置已经准备好使用了:

Settings.General.Host = "smtp.server.com"; Settings.General.Clients.Add(new Client { Name = "Tom", Email = "tom@company.com" });

保存到磁盘:

Settings.General.Save();

或者,恢复以前的值而不是保存新值:

Settings.General.Reload();

或者,重置为初始值:

Settings.General.Reset();

传递给一个函数:

Client client = Settings.General.Clients.Find(a => a.Name == "Tom"); notify(Settings.General.Host, Settings.General.Port, client.Email);

可以在CliverRoutinesExample项目中找到实时示例。

日志

Cliver.Log是一个以易用性为设计目标的日志记录器。

  • 跨平台
  • 线程安全
  • 会话导向 - 应用程序可以连续或同时写入多个日志会话。这在应用程序执行多个独立任务时很有帮助。
  • 线程导向 - 它可以自动为每个线程写入日志
  • 自动清理旧日志
  • 诊断输出

在项目中引用CliverRoutines。设置项目公司名称,因为它共同定义了日志目录。在应用程序开始时添加可选初始化:

Log.Initialize(Log.Mode.FOLDER_PER_SESSION);

简单的日志记录,当所有内容都被写入同一个文件时:

Log.Inform("test message");

记录到一个明确创建的会话的命名日志:

Log.Session game1Session = Log.Session.Get("Game1"); game1Session.Warning("test message"); game1Session["Test"].Warning("test message");

在这个例子中,每个线程写入自己的日志:

using Cliver; ... static void download(string uri) { try { Log.Thread.Inform("test message"); } catch (Exception e) { Log.Thread.Error2(e); } } static void Main(string[] args) { ThreadRoutines.Start(() => { download("http://file.com/1"); }); ... ThreadRoutines.Start(() => { download("http://file.com/N"); }); }
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485