应用程序非常大,因此给出了简短的背景和问题
当用户登录时,会显示一个按钮,其中包含允许他调用的功能文本。
他被允许的功能被映射到数据库表
中确保实际函数的名称与db中使用的名称相同。
提取名称,并将其存储为按钮的文本字段,也存储在字符串变量中。
现在我应该如何使用存储在其中的名称的字符串变量调用此函数!
就像我们输入
一样名称的功能();
但是在这里我不知道名字,运行时的字符串确实如此,我不能写像
的字符串()!?
答案 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上查找已使用的方法和类型:MethodInfo,Invoke
答案 1 :(得分:2)
好吧,无论你做什么,都必须在数据库“功能”和你的“真实”功能之间进行某种映射。您可以使用您的Types和MethodInfo来使用Reflection。
然而,这听起来像是一场维护噩梦。这听起来像是在重塑用户角色等。沿着这条路走下去我会非常谨慎 - 我认为这会比你想象的要复杂得多。