列表框 - 选择的项目直接使用反射调用类方法

时间:2010-12-29 11:50:46

标签: c# asp.net

我遇到这样的问题: -

1)包含Car,Scooter和Bike等值的列表框。点击按钮。

    <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)现在在按钮单击事件处理程序“Button1_Click”上,我想使用 REFLECTION only 基于列表框中的选定值调用getData()方法。

请帮帮我。

1 个答案:

答案 0 :(得分:1)

string data = (string)Type.GetType("MyAwesomeNamespace." + "Car").GetMethod("getData").Invoke(null, null);
  1. Type.GetType获取您的类型。您可能希望使用命名空间
  2. 作为前缀
  3. GetMethod获取getData方法
  4. Invoke将执行该方法。由于该方法是静态的,因此使用null调用该方法将起作用。如果它不是静态的,则必须将null替换为该对象的实例。此外,第二个null用作参数,在这种情况下不是