在.NET开发中,ConfigurationManager
是一个常见的配置管理工具,但使用起来往往不够灵活。为了解决这个问题,开发了CliverRoutines
,这是一个基于.NETStandard 2.0的跨平台库,可以在任何采用C#的平台上运行,包括.NET、Xamarin和Mono。本文将简要介绍CliverRoutines
的主要特点和使用方法。
每次使用.NET的ConfigurationManager
时,无论是存储自定义类型、初始化长数据设置,还是覆盖设置,尝试让ConfigurationManager
做一些自定义操作,都会陷入充满限制的尴尬编码中。更不用说通过Visual Studio设置表编辑设置是多么不便了。这就是为什么多年前开发了设置管理器Cliver.Config
。这个想法非常合适,从那时起,就再也没有回头。它已经在Windows和Xamarin.Mac上的许多应用程序中使用,无论复杂程度如何,都证明了它的简单性、能力和鲁棒性。
CliverRoutines
提供了日志Cliver.Log
和一些辅助例程。
Cliver.Config
是一个应用程序设置管理器,旨在替代.NET的ConfigurationManager
。
设置类型是普通的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"); });
}