Учитывая этот фрагмент кода
public abstract class Foo
{
private static SqlConnection _sqlConnection;
protected SqlConnection GetOpenConnection()
{
if (_sqlConnection == null)
{
_sqlConnection = new SqlConnection("connection string");
}
return _sqlConnection;
}
protected abstract void Execute();
}
public class FooImpl : Foo
{
protected override void Execute()
{
var myConn = GetOpenConnection();
var dog = myConn.Query<dynamic>("select 'dog' Animal");
var first = dog.First();
string animalType = first.Animal;
// more stuff here
}
}
Как бы вы обернули соединение в профилированное соединение, если у вас нет доступа к процессу создания соединения?Переписать код в суперклассе и перенести его туда?Это будет связано с изменением сотен классов, которые наследуются от базы.Я предпочел бы способ изменить базовый класс, с минимальными изменениями, необходимыми для суперсоваров
Спасибо, Стивен