public static RepositoryDbAccess Db(this RepositoryDataAccess data, Func <RepositoryDbAccess, IDbConnectionFactory> dbFactory) { var dbAccess = new RepositoryDbAccess(); var factory = dbFactory.Invoke(dbAccess); dbAccess.DbConnectionFactory = factory; return(dbAccess); }
public RepositoryDbAccessWithOutput(RepositoryDbAccess from) { var fromType = typeof(RepositoryDbAccess); var fieldParameters = fromType.GetField("_parameters", BindingFlags.NonPublic | BindingFlags.Instance); var fieldOutput = fromType.GetField("_output", BindingFlags.NonPublic | BindingFlags.Instance); var fieldCommandType = fromType.GetField("_commandType", BindingFlags.NonPublic | BindingFlags.Instance); var fieldUseLongTimeout = fromType.GetField("_useLongTimeout", BindingFlags.NonPublic | BindingFlags.Instance); var fieldBuffered = fromType.GetField("_buffered", BindingFlags.NonPublic | BindingFlags.Instance); var fieldConnectionStringName = fromType.GetField("_connectionStringName", BindingFlags.NonPublic | BindingFlags.Instance); var fieldCustomTimeout = fromType.GetField("_customTimeout", BindingFlags.NonPublic | BindingFlags.Instance); var fieldOutputParameters = fromType.GetField("_outputParameters", BindingFlags.NonPublic | BindingFlags.Instance); var propertyDbConnectionFactory = fromType.GetProperty("DbConnectionFactory"); fieldParameters?.SetValue(this, fieldParameters.GetValue(from)); fieldOutput?.SetValue(this, fieldOutput.GetValue(from)); fieldCommandType?.SetValue(this, fieldCommandType.GetValue(from)); fieldUseLongTimeout?.SetValue(this, fieldUseLongTimeout.GetValue(from)); fieldBuffered?.SetValue(this, fieldBuffered.GetValue(from)); fieldConnectionStringName?.SetValue(this, fieldConnectionStringName.GetValue(from)); fieldCustomTimeout?.SetValue(this, fieldCustomTimeout.GetValue(from)); fieldOutputParameters?.SetValue(this, fieldOutputParameters.GetValue(from)); propertyDbConnectionFactory?.SetValue(this, propertyDbConnectionFactory.GetValue(from)); }