C# 按位置访问参数值?
我正在尝试开发一种方法,将一个方法从我的C#.NET应用程序动态地分派到数据库存储过程。我已经有了一个调用存储过程的方法,它接受过程名和一个参数哈希表。我希望能够从应用程序中的任何其他方法调用该方法,因此我构建了以下内容(其中ParameterMap是存储过程参数名称的静态哈希表):C# 按位置访问参数值?,c#,.net,C#,.net,我正在尝试开发一种方法,将一个方法从我的C#.NET应用程序动态地分派到数据库存储过程。我已经有了一个调用存储过程的方法,它接受过程名和一个参数哈希表。我希望能够从应用程序中的任何其他方法调用该方法,因此我构建了以下内容(其中ParameterMap是存储过程参数名称的静态哈希表): public Foo DoSomething(int x, int y) { var mb = MethodBase.GetCurrentMethod(); var
public Foo DoSomething(int x, int y)
{
var mb = MethodBase.GetCurrentMethod();
var parameters = new Hashtable();
foreach (var pi in mb.GetParameters())
{
var storedProcMethodName = (ArrayList)ParameterMap[mb.Name];
var storedProcParameterName = storedProcMethodName[pi.Position];
parameters.Add(storedProcParameterName, ???);
}
return (Foo)
CallDatabaseMemberFunction("GET", parameters, typeof(Foo));
}
我想用x和y中的参数值替换???,按位置访问它们,从而将存储过程参数名称映射到此方法的参数值。也欢迎使用任何其他方法解决此问题。您不能以这种方式检索参数值,至少不能在.NET中检索 您必须明确地写出代码(我已经删除了对
storedProcMethodName
的赋值,因为您没有在任何地方使用它):
如果你经常需要这样做,你应该考虑编写一个自动生成这个代码的工具。我知道的所有SQL层(IQooToCKIT,SuSoNoto,LINQtoSQL)都是这样做的。
我担心这是真的。谢谢。public Foo DoSomething(int x, int y)
{
var mb = MethodBase.GetCurrentMethod();
var parameters = new Hashtable();
parameters.Add("x", x);
parameters.Add("y", y);
return (Foo)
CallDatabaseMemberFunction("GET", parameters, typeof(Foo));
}