2012-06-12 30 views
0

我使用Flee來構建公式構建器。它很好,但我面臨的唯一問題是Flee不明白Generic Methods我想。使用FLEE和自定義表達式上下文進行表達式分析

我有一個函數稱爲IIf在我正在使用的表達式上下文中聲明。

Public Function IIf(Of T)(ByVal cond As Boolean, ByVal left As T, ByVal right As T) As T 
    Return If(cond, left, right) 
End Function 

現在我可以說,我在評估

IIF(A==B,1,5) 

當我試圖編譯的表達,迴避率被拋出ExpressionException指出 -

The function IIf(boolean, Int32, Int32) is not declared. 

如何我可以解決這個問題嗎?就意義而言,我的意思是不能寫出所有.net基本類型的函數的所有可能的重載。我應該採取什麼方法。

回答

2

在關於FLEE的討論中,一個海報設法讓泛型運行。檢查出http://flee.codeplex.com/discussions/14611。實際上,海報將包含的類聲明爲Generic。

或者,根據您的課程結構如何進行討論可能沒有辦法:http://flee.codeplex.com/discussions/355342其中聲明發布者必須爲原始數據類型聲明公共重載。

您可能還能夠逃脫與申報對象的通用方法,並關閉Option Strict允許隱式轉換,像這樣:

Public Function IIf(ByVal cond As Boolean, ByVal left As Object, ByVal right As Object) As Object 
    Return If(cond, left, right) 
End Function 
+0

'選項Strict'沒有幫助。我也試過通用的包裝類方法,但不知何故它找不到'DynamicExpressionOwner'類。 –

+0

我寫完了所有具體的方法重載。通用版本沒有幫助我的情況,但無論如何你打開了我的眼睛。 –