Подтвердить что ты не робот

Создайте делегат, если есть условный атрибут

У меня есть портативная библиотека классов с классом PCLDebug:

public static class PCLDebug {
    public static Action<string> LogLine { get; set; }
}

То, что я хочу сделать, - это настроить вещи во внешнем проекте, а затем вызвать LogLine в PCL для печати материала в окне вывода VS. Вот моя попытка:

MyPCL.PCLDebug.LogLine = System.Diagnostics.Debug.WriteLine;

Проблема здесь в том, что компилятор жалуется, потому что System.Diagnostics.Debug.WriteLine имеет условный атрибут Debug:

Невозможно создать делегат с "System.Diagnostics.Debug.WriteLine(string)", поскольку он имеет условный атрибут

На самом деле это нормально, если вызов LogLine работает только в среде отладки. Но как мне сохранить компилятор счастливым?

4b9b3361

Ответ 1

Вы можете попробовать обернуть его в лямбда-функцию:

MyPCL.PCLDebug.LogLine = s => { System.Diagnostics.Debug.WriteLine( s ); };

Ответ 2

вы также можете использовать эту альтернативную нотацию:

    MyPCL.PCLDebug.LogLine = delegate(string text) { System.Diagnostics.Debug.WriteLine(text); };