假设以下示例。数据库连接处理的通用方法。
DbConnection.BeginTransaction()
(来自 System.Data.Common)返回一个DbTransaction
实例。既然这是明确说明的,为什么我需要明确地转换它?
internal abstract class ADatabase<DbCommandType, DbConnectionType, DbTransactionType> : IDisposable
where DbCommandType : DbCommand, new()
where DbConnectionType : DbConnection, new()
where DbTransactionType : DbTransaction, new()
{
DbConnectionType _connection;
DbTransactionType _transaction;
void Foo()
{
_transaction = _connection.BeginTransaction(); // <-- Error..
}
}
我得到的错误是
错误 1 无法将类型“System.Data.Common.DbTransaction”隐式转换为“DbTransactionType”。存在显式转换(您是否缺少演员表?)
我当然可以施放它,但问题是为什么?