Eval("foo")
является ярлыком для DataBinder.Eval(Container.DataItem, "foo")
. Container.DataItem содержит фактические данные, которые вы пытаетесь получить, а метод Eval()
просто использует отражение или другие средства, чтобы разрешить позднее связывание имен.
Если вы хотите улучшить проверку типов во время компиляции, вы всегда можете привести Container.DataItem
к любому типу, который вы хотите.
Вы также можете повторно использовать DataBinder.Eval()
в другом месте, как ярлык для использования Reflection.
Ниже приведены некоторые примеры того, что вы можете сделать:
<%# DoSomethingWithData (DataBinder.Eval(Container.DataItem, "Foo")) %>
Sub DoSomethingWithData (Object data)
SomeProperty = data
DoSomethingWithData = data
End Sub
<%# DoSomethingWithDataStronglyTyped (Container.DataItem) %>
Sub DoSomethingWithDataStronglyTyped (Object data)
Dim StronglyTyped as SomeType
StronglyTyped = DirectCast (data, SomeType)
DoSomethingWithDataStronglyTyped = DoSomethingElse(StronglyTyped)
End Sub
Sub ExampleOfDataBinderEvalReuse ()
Dim StronglyTyped as SomeType
StronglyTyped = GetSomeData()
' get "Foo" property of the SomeType class
DataBinder.Eval(StronglyTyped, "Foo")
End Sub