2009-10-05 5 views

Trả lời

17

Bạn chỉ cần một lớp để hoạt động như một TextWriter mà LINQ to SQL cần gửi nó qua phương thức bạn muốn, ví dụ:

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

Đây là một tác giả văn bản nhỏ mà tôi đã viết cần có một đại biểu và gửi đến đó để bạn sử dụng mã ở trên. Bạn có thể muốn thay đổi lớp này để nó lấy một trình ghi nhật ký, đã thực hiện một số xử lý/tách trên văn bản và sau đó gửi nó ra 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

Tuyệt vời, cảm ơn :) – Jedidja