0

次のコードがあります。

dynamic users = BLClass.MYBLMethod();
List<string> usernames = BLClass.MYBLSecondMethod();
foreach (string username in usernames)
{
    users[username].test();
}

BL メソッドからユーザー (動的タイプ) を取得しています。次に、他の方法から、ユーザー名のリストを取得しています。その後、ユーザー名のリストに foreach を適用しています。このループでは、メソッド「test」を呼び出しています。この「テスト」メソッドは、JavaScript コードで使用されます。今私の質問は、上記のコードを次のような拡張メソッドに変換するにはどうすればよいかということです:

BLClass.SomeExtensionMethod(methodname)

つまり、私の SomeExtensionMethod は、次のロジックをカバーします。

dynamic users = BLClass.MYBLMethod();
List<string> usernames = BLClass.MYBLSecondMethod();
foreach (string username in usernames)
{
    users[username].methodname();
}

この拡張機能の作成を手伝ってもらえますか?

編集:

私の目標はBLClass.SomeExtensionMethod(methodname)を持つことです。その中にメソッド名を渡し、内部コード (拡張機能内) がこのコードを呼び出す必要があります。

users[username].methodname();
4

2 に答える 2

0

あなたのタイプがどのように見えるか正確にはわかりませんが、 を使用して名前でメソッドを呼び出すことができますGetMethod()

public static class Extensions
{
    public static void SomeExtensionMethod(this BLClass blclass, string methodname)
    {
        dynamic users = blclass.MYBLMethod();
        List<string> usernames = blclass.MYBLSecondMethod();
        foreach (string username in usernames)
        {
            var user = users[username];
            user.GetType().GetMethod(methodname).Invoke(user, null);
        }
    }
}
于 2012-07-26T11:14:46.327 に答える