Eval()上的扩展方法

时间:2012-01-18 01:36:37

标签: .net vb.net data-binding .net-4.0 extension-methods

我有这样的扩展方法:

<Extension()>
Public Function Trim(value As Object, MaxLength As Integer) As String
    If value IsNot Nothing AndAlso value.ToString.Length > MaxLength Then
        Return value.ToString.Substring(0, MaxLength)
    Else
        Return value.ToString
    End If
End Function

我的假设是,我可以在数据绑定时使用Eval("MyColumnName").Trim(20)(而不是像MyMethod(Eval(“MyColumnName”)这样做)但事实证明这是不正确的。

有没有办法在Eval方法上使用扩展名?

PS:我将我的扩展引用为全局参考

1 个答案:

答案 0 :(得分:1)

事实证明,虽然您可以扩展Object类型,但您无法使用Object类型的变量来调用该方法。

MSDN Magazine: Basic Instincts: Extension Methods

Dim myString As String = "ABC123"
Dim myObject As Object = "ABC123"
Dim myResult as String

myResult = myString.Trim(3)  ' Works
myResult = myObject.Trim(3)  ' Fails

所以我认为你所希望的最好的单线是:

Eval("MyColumnName").ToString.Trim(20)