jer*_*ith 8 vb.net lambda log4net delegates
背景故事:我正在使用log4net处理我正在处理的项目的所有日志记录.可以在几种不同的情况下调用一种特定的方法 - 一些保证日志消息是错误,另一些保证日志消息是警告.
所以,作为一个例子,我怎么能转
Public Sub CheckDifference(ByVal A As Integer, ByVal B As Integer)
If (B - A) > 5 Then
log.ErrorFormat("Difference ({0}) is outside of acceptable range.", (B - A))
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
进入更符合以下方面的事情:
Public Sub CheckDifference(ByVal A As Integer, ByVal B As Integer, "Some delegate info here")
If (B - A) > 5 Then
**delegateinfo**.Invoke("Difference ({0}) is outside of acceptable range.", (B - A))
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
所以我可以调用它并传递log.ErrorFormat或log.WarnFormat作为委托?
我在VS 2008和.NET 3.5 SP1中使用VB.NET.此外,我对一般的代表来说还是比较新的,所以如果这个问题措辞不同以消除任何含糊之处,请告诉我.
编辑:另外,我怎么能将委托初始化为类构造函数中的ErrorFormat或WarnFormat?会这么容易myDelegate = log.ErrorFormat吗?我认为还有更多的东西(原谅我对这个问题的无知 - 代表们真的是我想要了解更多的东西,但到目前为止他们已经没有理解我的理解).
Nes*_*cio 14
声明您的代理签名:
Public Delegate Sub Format(ByVal value As String)
Run Code Online (Sandbox Code Playgroud)
定义您的测试功能:
Public Sub CheckDifference(ByVal A As Integer, _
ByVal B As Integer, _
ByVal format As Format)
If (B - A) > 5 Then
format.Invoke(String.Format( _
"Difference ({0}) is outside of acceptable range.", (B - A)))
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
代码中的某处调用Test函数:
CheckDifference(Foo, Bar, AddressOf log.WriteWarn)
Run Code Online (Sandbox Code Playgroud)
要么
CheckDifference(Foo, Bar, AddressOf log.WriteError)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17581 次 |
| 最近记录: |