2010-11-29 43 views
0

VB lambda表達式有代碼:爲子代表

Private Sub InsertItemInCache(Of T)(ByVal item As CachedItem(Of T), ByVal dependency As AggregateCacheDependency, _ 
ByVal key As String, ByVal updateCallBack As CacheItemUpdateCallback) 

CacheItemUpdateCallback的簽名是:

Sub CacheItemUpdateCallback(ByVal key As String, ByVal reason As CacheItemUpdateReason, _ 
    ByRef expensiveObject As Object, ByRef dependency As CacheDependency, ByRef absoluteExpiration As Date, _ 
    ByRef slidingExpiration As TimeSpan) 

我想用蘭巴表達這個調用InsertItemInCache功能。 此代碼不能編譯:

InsertItemInCache(cachedItem, dependency, key, Function(k, r, e, d, a, s) CacheItemUpdateCallback(k, r, e, d, a, s)) 

它說如果我改變表達不產生價值

子CacheItemUpdateCallback功能CacheItemUpdateCallback 它也不會被編譯並嵌套說函數不具有與委託相同的簽名'Delegate Sub CacheItemUpdateCallback(key As String,reason As System.Web.Caching.CacheItemUpdateReason,ByRef expensiveObject As Object,ByRe f依賴作爲System.Web.Caching.CacheDependency,ByRef absoluteExpiration作爲日期,ByRef slidingExpiration作爲System.TimeSpan)'

任何人都可以幫助我通過lambda表達式調用此方法嗎?我想在將來使用關閉功能,並以這種方式調用此功能:

InsertItemInCache(cachedItem, dependency, key, Function(k, r, e, d, a, s) CacheItemUpdateCallbackNew(k, r, e, d, a, s, additionalParameter1, additionalParameter2, additionalParameter3)) 
+0

是我的問題清楚嗎? – Egor4eg 2010-11-29 12:33:06

回答

2

這個怎麼樣?

InsertItemInCache(cachedItem, dependency, key, _ 
    Sub(k, r, e, d, a, s) CacheItemUpdateCallback(k, r, e, d, a, s)) 

我認爲這隻會在2010年VB.Net工作,據我記得更早版本不支持Sub lambda表達式。

+0

我在VS2008中工作。所以,這段代碼也不會被編譯。 – Egor4eg 2010-11-29 12:26:23