mono – MvvmCross Mvx.Trace用法

我正在使用MvvmCross.
在库中,我看到了Mvx.Trace方法用法,但没有输出到控制台/输出窗口.
如何使用它?

附:我已经设置了编译器常量Trace = true

谢谢.

解决方法

MvvmCross DebugTrace全部通过IMvxTrace的单例实现进行路由

每个平台都提供不同的实现:

> Windows平台使用调试跟踪(因为Trace本身并非在所有Windows平台上都可用)
> Android使用Debug和Android日志的双重日志
> iOS使用Debug和iOS控制台的双重日志

这在早期版本的MvvmCross中运行良好,尤其是人们直接链接到MvvmCross源代码,因此可以直接绑定到调试或释放MvvmCross二进制文件.

但是……因为人们现在越来越多地使用Nuget发布的二进制文件 – 其中Debug当然是编译出来的,那么这通常会让人们问“如何使用它?”

最简单的方法是在Setup类中覆盖IMvxTrace的初始化.

这很容易做到 – 例如:

protected override IMvxTrace CreateDebugTrace() { return new MyDebugTrace(); }

其中MyDebugTrace是这样的:

public class MyDebugTrace : IMvxTrace
{
    public void Trace(MvxTraceLevel level,string tag,Func<string> message)
    {
        Debug.WriteLine(tag + ":" + level + ":" + message());
    }

    public void Trace(MvxTraceLevel level,string message)
    {
        Debug.WriteLine(tag + ":" + level + ":" + message);
    }

    public void Trace(MvxTraceLevel level,string message,params object[] args)
    {
        try
        {
            Debug.WriteLine(string.Format(tag + ":" + level + ":" + message,args));
        }
        catch (FormatException)
        {
            Trace(MvxTraceLevel.Error,tag,"Exception during trace of {0} {1} {2}",level,message);
        }
    }
}

如果你想包含不同的调试/发布实现;如果你想在运行时打开/关闭它;如果你想过滤MvxTraceLevel或标签;或者如果你想使用某些第三方日志引擎,那么在每个平台上使用简单的C#也应该很容易.

相关文章

这篇“android轻量级无侵入式管理数据库自动升级组件怎么实现...
今天小编给大家分享一下Android实现自定义圆形进度条的常用方...
这篇文章主要讲解了“Android如何解决字符对齐问题”,文中的...
这篇文章主要介绍“Android岛屿数量算法怎么使用”的相关知识...
本篇内容主要讲解“Android如何开发MQTT协议的模型及通信”,...
本文小编为大家详细介绍“Android数据压缩的方法是什么”,内...