Методы расширения в Eval () - PullRequest
0 голосов
/ 18 января 2012

У меня есть такой метод расширения:

<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 Ответ

1 голос
/ 18 января 2012

Оказывается, что, хотя вы можете расширить тип Object, вы не можете использовать переменную типа Object для вызова метода.

MSDN Magazine: основные инстинкты: методы расширения

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)
...