0

我正在使用Flee构建公式生成器。它工作得很好,但我面临的唯一问题是 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)

当我试图编译表达式时,Flee 抛出一个 ExpressionException 说明 -

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

我该如何解决这个问题。从某种意义上说,我的意思是不能编写所有 .net 原始类型的函数的所有可能重载。我应该采取什么方法。

4

1 回答 1

2

在关于 FLEE 的讨论中,一位发帖人设法让 Generics 工作。查看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
于 2012-06-16T09:57:46.707 回答