根据条件调用方法的更好方法

时间:2019-01-22 05:45:16

标签: c# methods sqldatareader

我有一个代码段,我在其中调用数据库并以DataReader的形式返回数据。这基于参数是使用存储的proc来调用还是使用纯文本。像这样:

IDataReader dataReader = null;

if (commandType == CommandType.StoredProcedure)
{
   dataReader = GetReaderByProc(proc, parameters);
}
else if (commandType == CommandType.Text)
{
   dataReader = GetReaderByText(text);
}

其中commandTypeSystem.Data.CommandType

现在这绝对可以。但是我很好奇,在这样的代码场景中,有没有更好的方法来实现这一点。

我可以根据条件调用方法的更优雅或更佳方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用<Switch> <Router history={history} > <div> { routes.map( (route, index) => <Route key={index} exact={route.exact} path={route.path} component={(props)=><route.component {...props} isAuthed={true} />}/>) } </div> </Router> </Switch> 来保存键(dictionary)和其他commandType的值,然后只需使用键获取Func<>并执行它即可。 / p>

func

然后您可以像这样调用它:

      public static Dictionary < string, Func<string, parameters, IDataReader> dbMethods = 
                           new Dictionary<string, Func<string, parameters, IDataReader>();

         public static void CreateMethodDictionary()
         {                
            dbMethods.Add(CommandType.StoredProcedure, GetReaderByProc);
            dbMethods.Add(CommandType.Text, GetReaderByText);
         }

这确实假定您的两个调用函数都使用相同的参数(当前情况并非如此)并返回相同的对象。

尽管您的文本查询也应该使用参数,但查看代码也是如此,因为参数化查询应该是常态。

相关问题