如何在C#(.NET 2.0)中获取给定TableAdaptor和SqlDataAdaptor的Sql Command对象

时间:2020-03-06 14:26:24  来源:igfitidea点击:

我正在为我们的应用程序创建一个通用的错误处理/日志记录类。目的是记录异常信息,有关类和函数(以及参数)的信息,以及相关的有关System.Data.SqlClient.SqlCommand对象的信息。

我希望能够处理SqlCommands,TableAdaptors和SqlDataAdaptors的传递。

我是使用反射技术的新手,我知道可以做到这一点,但我不确定该如何做。请指教。

解决方案

这是你在说什么吗?

SqlDataAdapter da = new SqlDataAdapter();
var cmd1 = ((IDbDataAdapter)da).DeleteCommand;
var cmd2 = ((IDbDataAdapter)da).UpdateCommand;
var cmd3 = ((IDbDataAdapter)da).SelectCommand;
var cmd4 = ((IDbDataAdapter)da).InsertCommand;

SqlDataAdapter实现IDbDataAdapter,它具有所有CRUD命令的getter / setter方法。 SqlDataAdapter显式实现这些功能,因此除非我们首先将其强制转换为接口,否则它们不会显示在类的签名中。无需反思。