当然,最好的方法是将方法转换为属性。但我不能这样做 -
我们有来自其他人的API,我们已经为其中一个对象添加了扩展方法。我们需要在字符串中此方法在数据绑定情况下返回(GridView)。
似乎我们不能添加扩展属性(男人,本来真的很好......),所以我有这个方法,我想要最干净的方法来在数据绑定中呈现它:
虽然我可以使用属性执行此操作:
<%# Eval("MyProperty") %>
我必须用一种方法来做到这一点:
<%# ((MyClass)Container.DataItem).MyExtensionMethod() %>
这是我过去的做法,但有比这更清洁的方法吗?我不能改变类(它不是我的),我不能添加扩展属性,所以我坚持使用这种方法。
答案 0 :(得分:0)
我猜你可以编写自己的方法,将Container
对象和方法的名称作为字符串,然后使用反射来调用方法。它最终看起来像这样:
<%# Call(Container, "MyExtensionMethod") %>
我怀疑你能比这更清洁,因为Eval
是一个在编译时重写的特殊情况。