如何实现动态调用函数,正确的调用函数是由数据库值决定的,使用c#

时间:2010-10-12 19:48:44

标签: c# code-generation

应用程序非常大,因此给出了简短的背景和问题

当用户登录时,会显示一个按钮,其中包含允许他调用的功能文本。

他被允许的功能被映射到数据库表

确保实际函数的名称与db中使用的名称相同。

问题

提取名称,并将其存储为按钮的文本字段,也存储在字符串变量中。

现在我应该如何使用存储在其中的名称的字符串变量调用此函数!

就像我们输入

一样

名称的功能();

但是在这里我不知道名字,运行时的字符串确实如此,我不能写像

的字符串()!?

2 个答案:

答案 0 :(得分:2)

您需要使用反射来执行此操作。以下是您需要做的草图:

// Get the Type on which your method resides:
Type t = typeof(SomeType);
// Get the method
MethodInfo m = t.GetMethod("methodNameFromDb");
// Invoke dynamically
m.Invoke(instance, null);

根据您的实际需求,您需要稍微修改一下 - 在MSDN上查找已使用的方法和类型:MethodInfoInvoke

答案 1 :(得分:2)

好吧,无论你做什么,都必须在数据库“功能”和你的“真实”功能之间进行某种映射。您可以使用您的Types和MethodInfo来使用Reflection。

然而,这听起来像是一场维护噩梦。这听起来像是在重塑用户角色等。沿着这条路走下去我会非常谨慎 - 我认为这会比你想象的要复杂得多。