我有一个类PCLDebug
的可移植类库:
public static class PCLDebug {
public static Action<string> LogLine { get; set; }
}
我想要做的是在外部项目中设置一次,然后能够在PCL中调用LogLine
以将内容打印到VS Output窗口。这是我的尝试:
MyPCL.PCLDebug.LogLine = System.Diagnostics.Debug.WriteLine;
这里的问题是编译器抱怨,因为System.Diagnostics.Debug.WriteLine有一个条件属性Debug:
无法使用'System.Diagnostics.Debug.WriteLine(string)'创建委托,因为它具有条件属性
如果LogLine
调用仅在调试环境中有效,我实际上很好。但是我如何让编译器满意呢?
答案 0 :(得分:47)
您可以尝试将其包装在lambda函数中:
MyPCL.PCLDebug.LogLine = s => { System.Diagnostics.Debug.WriteLine( s ); };
答案 1 :(得分:4)
您也可以使用此备选表示法:
MyPCL.PCLDebug.LogLine = delegate(string text) { System.Diagnostics.Debug.WriteLine(text); };