2010-12-29 6 views
0

を使用してクラスメソッドを呼び出して、選択された項目私はこのような問題シナリオを有する: -リストボックス - 直接反射

1)車、スクーター、自転車のような値をリストボックス。クリックするボタン。

<div> 
<asp:ListBox ID="lst" runat="server"> 
    <asp:ListItem Text="Bike" Value="Bike"></asp:ListItem> 
    <asp:ListItem Text="Car" Value="Car"></asp:ListItem> 
    <asp:ListItem Text="Scooter" Value="Scooter"></asp:ListItem> 
</asp:ListBox> 
    <br /> 
    <br /> 
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Invoke" /> 
</div> 

2)今、私は以下のような三つの異なるクラスがあります: -

class Car 
{ 
    static string getData() 
    { 
     return "I like cars"; 
    } 
} 

class Bike 
{ 
    static string getData() 
    { 
     return "I like Bike"; 
    } 
} 

class Scooter 
{ 
    static string getData() 
    { 
     return "I dont like scooter"; 
    } 
} 

3)Now]ボタンのクリックイベントハンドラ "のButton1 Click" に、私は上のベースのgetData()メソッドを呼び出したいですリストボックスから選択した値はREFLECTIONのみです。

私を助けてください。

+0

3つのクラスすべてでインターフェイスを作成して実装する方がよいでしょうか? – Arcturus

答えて

1
string data = (string)Type.GetType("MyAwesomeNamespace." + "Car").GetMethod("getData").Invoke(null, null); 
  1. Type.GetTypeあなたのタイプを取得します。接頭辞にネームスペースを付けることができます。
  2. GetMethod getDataメソッドを取得します。
  3. Invokeこのメソッドを実行します。メソッドが静的なので、nullでメソッドを呼び出すと機能します。静的でない場合、nullはそのオブジェクトのインスタンスと置き換えなければなりません。また、2番目のヌルがパラメータとして機能しますが、この場合はありません。
+0

メソッドから戻り文字列を取得するにはどうすればいいですか? lbl1.Text = Type.GetType(sValue).GetMethod( "getData")。Invoke(null、null);.このステートメントは機能しません。私はここに何かをキャストする必要がありますか? – Karan

+0

あなたのコメントを反映するために私の答えを編集;) – Arcturus

+0

呼び出しメソッドは1つの引数を取っていません。 – Karan