2009-06-10 9 views
0

もちろん、メソッドをプロパティに変換するのが最善の方法です。しかし、私はここでそれを行うことはできません -データバインディング中にメソッドの結果をレンダリングする最もクリーンな方法は何ですか?

私たちは他の誰かからのAPIを持っており、私たちはオブジェクトの1つに拡張メソッドを追加しました。このメソッドがデータバインディング状況(GridView)で返す文字列が必要です。

我々が拡張にプロパティ(本当に素敵だっただろう男を、...)を追加することができていないようですので、私はこの方法を持っている、と私はデータでそれをレンダリングするための可能なクリーンな方法をしたいです - 結合:

<%# Eval("MyProperty") %> 

私はこの方法でこれをしなければならない:

<%# ((MyClass)Container.DataItem).MyExtensionMethod() %> 

のTh

私はプロパティでこれを行うことができますが私は過去にそれをやったことがありますが、そこより清潔な方法がありますか?私はクラスを変更することはできません(それは私ではない)、私は拡張プロパティを追加することはできませんので、私はこのメソッドに固執しています。

答えて

0

Containerオブジェクトとメソッドの名前を文字列として受け取った独自のメソッドを作成してから、メソッドを呼び出すためにリフレクションを使用すると思います。それは最後に次のようになりたい:

<%# Call(Container, "MyExtensionMethod") %> 

Evalは、コンパイル時に書き換えられ、特殊なケースですので、私は、あなたがそれよりはるかにきれい得ることができます疑います。