0

我有以下代码:

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

我正在从 BL 方法中获取用户(动态类型)。接下来从其他方法我正在获取用户名列表。之后,我在用户名列表上应用 foreach。在这个循环中,我调用一个方法“测试”。这个“测试”方法将在我的 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 回答
0

不知道为什么你需要这样做......

public class 1 {
    public void method(){
        //do stuff
    }
}

public class 2 {
    public void method2(){
        dynamic users = BLClass.MYBLMethod();
        List<string> usernames = BLClass.MYBLSecondMethod();
        foreach (string username in usernames)
        {
             1.method(users[username]);
         }
    }
 }

这会更简单吗?

于 2015-08-06T14:15:09.387 回答