2009-10-05 29 views

回答

17

您只需要一个类来充当TextWriter,LINQ to SQL需要通过您想要的方法调度它,例如,

db.Log = new ActionTextWriter(s => logger.Debug(s)); 

这是我写的一个小文本编写器,它需要一个委托并发送给那个所以你使用上面的代码。你可能会想改变这个类,所以它需要一个记录器,对文本进行一些处理/拆分,然后将其分发给NLog。

class ActionTextWriter : TextWriter { 
    private Action<string> action; 

    public ActionTextWriter(Action<string> action) { 
    this.action = action; 
    } 

    public override void Write(char[] buffer, int index, int count) { 
    Write(new string(buffer, index, count)); 
    } 

    public override void Write(string value) { 
    action.Invoke(value); 
    } 

    public override Encoding Encoding { 
    get { return System.Text.Encoding.Default; } 
    } 
} 
+0

太棒了,谢谢:) – Jedidja 2010-10-26 15:51:05