mono - MvvmCross Mvx.Trace 用法

标签 mono xamarin.ios xamarin.android xamarin mvvmcross

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

p.s.我已经设置了编译器常量 Trace = true

谢谢。

最佳答案

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

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

  • Windows 平台使用 Debug跟踪(因为 Trace 本身并非在所有 Windows 平台上都可用)
  • Android 使用 Debug 的双日志和安卓 log
  • iOS 使用 Debug 的双重日志和 iOS Console

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

    但是...因为人们现在越来越多地使用 Nuget 的发行版二进制文件 - 其中 Debug当然是编译出来的,那么这经常会让人问“怎么用?”

    最简单的方法是在您的 Setup 中覆盖 IMvxTrace 的初始化。类(class)。

    这很容易做到 - 例如:
       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 tag, string message)
        {
            Debug.WriteLine(tag + ":" + level + ":" + message);
        }
    
        public void Trace(MvxTraceLevel level, string tag, 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);
            }
        }
    }
    

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

    关于mono - MvvmCross Mvx.Trace 用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17233922/

    相关文章:

    c# - 如何在contentpage中的contentview的stacklayout中添加控件?

    android - Android 单声道 : Map Balloons for Mono

    java - 使用 Mono 而不是 Java 的主要好处是什么?

    mono - mono 是否将 C# 编译为原生?

    c# - C# 示例中的 GKScore ReportScores 方法

    c# - Xamarin Android 中的自动完成 TextView

    c# - 通过 dbus-sharp 访问 NetworkManager 连接设置

    linux - 使用 mono/xbuild 编译 VS2015 应用程序时遇到问题

    html - Monocross/HTML5 与 MonoDroid/MonoTouch/Windows

    xamarin.android - Android 绑定(bind)库无法解析 : L. ...../R$layout