我想在mvvmcross中使用log4net来替换MvxDebugTrace,但我不想更改核心源代码,是否可能?
答案 0 :(得分:3)
Debugtrace在InitializeDebugServices
中的设置中初始化。
目前,这是使用这些步骤在每个平台上实现的(示例来自Android):
此InitialiseDebugServices
方法被标记为虚拟 - 因此您可以在每个平台内的自己的Setup.cs类中覆盖它。
要构建从mvx到log4net的桥接,您需要实现这个简单的IMvxTrace
接口 - https://github.com/slodge/MvvmCross/blob/v3/CrossCore/Cirrious.CrossCore/Platform/IMvxTrace.cs
完成此操作...在每个平台上,您应该能够实现MySpecialTrace
实现IMvxTrace
,然后您应该能够使用以下命令在安装程序中初始化它:
protected override void InitializeDebugServices()
{
Mvx.RegisterSingleton<IMvxTrace>(new MySpecialTrace());
MvxTrace.Initialize();
}