我正在使用Flee来构建公式构建器。它的效果很好,但我遇到的唯一问题是Flee不理解Generic Methods我猜。
我在我正在使用的表达式上下文中声明了一个名为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)
当我尝试编译表达式时,Flee正在抛出一个表达式 -
的ExpressionExceptionThe function IIf(boolean, Int32, Int32) is not declared.
我该如何解决这个问题。我的意思是,在某种意义上,不能写出所有.net原语类型的函数的所有可能的重载。我应该采取什么方法。
答案 0 :(得分:2)
在关于FLEE的讨论中,一张海报设法让Generics工作。查看http://flee.codeplex.com/discussions/14611。实际上,海报将包含类声明为通用。
或者,根据此讨论,可能没有办法取决于您的类的结构: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