Beispiel #1
0
        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));
        }