我有一個可移植類庫與類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擁有調試的條件屬性:
無法創建「System.Diagnostics程序委託.Debug.WriteLine(string)',因爲它具有條件屬性
如果LogLine
調用只在調試環境中工作,我實際上很好。但是,我如何保持編譯器的快樂?
這爲我工作。謝謝! – realPT
爲什麼這個工作,但它不直接分配? – reggaeguitar
@reggaeguitar由於'ConditionalAttribute'會導致編譯器忽略對函數的調用,但直接賦值不是調用,它實際上是委託構造,所以不能省略。 lambda可以工作,因爲它創建了一個匿名函數,它不做任何事情或者調用條件函數。無論哪種情況,代表都是明確的。 – Kyle