on Oct 30th, 2008C# – Anropa metoder dynamiskt

Jag har tidigare skrivit ett REST-API i PHP, som jag nu av ett antal orsaker var tvungen att porta till C#, och kom på att jag faktiskt inte skrivit särskillt mycket om C# än.

I PHP använder jag Reflection-api:t för att anropa metoder dynamiskt, ungefär enligt http://rest.host.com/klass/method/parametrar. Jag googlade efter olika lösningar folk använder för att anropa methoder dynamiskt i C#, men fann inget som jag tyckte såg bra ut.

Min slutgiltiga lösning blev att använda Type-klassen samt GetType()-methoden i samma klass. Exempel på användning, utan felhantering m.m:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        String szClass = Request.QueryString["class"];
        String szMethod = Request.QueryString["method"];
        String szParam = Request.QueryString["param"];

        object[] parameters = { szParam };

        Invoke(szClass, szMethod, parameters);
    }

    public void Invoke(String szClass, String szMethod, object[] parameters)
    {
        Type type = Type.GetType(szClass);

        type.InvokeMember(szMethod, BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Static, null, null, parameters);
    }
}

public class Printer
{
    public static void Print(String sz)
    {
        HttpContext.Current.Response.Write(sz);
    }
}
 

Rekommenderas:
våning på Östermalm

RSS

Lämna en kommentar