我想在mvvmcross中使用log4net来代替MvxDebugTrace,但是我不想改变核心源代码,可以吗?
问问题
340 次
1 回答
3
Debugtrace 在 setup 中初始化InitializeDebugServices
。
目前,这是使用以下步骤在每个平台上实现的(示例来自 Android):
- https://github.com/slodge/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross.Droid/Platform/MvxAndroidSetup.cs#L65
- https://github.com/slodge/MvvmCross/blob/v3/Cirrious/Cirrious.MvvmCross/Platform/MvxSetup.cs#L55
此InitialiseDebugServices
方法被标记为虚拟 - 因此您可以在每个平台内的您自己的 Setup.cs 类中覆盖它。
为了构建从 mvx 到 log4net 的桥梁,您需要实现这个简单的IMvxTrace
接口 - https://github.com/slodge/MvvmCross/blob/v3/CrossCore/Cirrious.CrossCore/Platform/IMvxTrace.cs
完成此操作...在每个平台上,您应该能够实现MySpecialTrace
which implements IMvxTrace
,然后您应该能够在 Setup 中使用以下命令对其进行初始化:
protected override void InitializeDebugServices()
{
Mvx.RegisterSingleton<IMvxTrace>(new MySpecialTrace());
MvxTrace.Initialize();
}
于 2013-05-03T06:24:30.033 回答