[Mono-list] Variable Scope Problem

brofski joelbartenbach at gmail.com
Wed Jul 7 01:18:31 EDT 2010


Forgive me if this is already posted in a different way.  Basically there is
an issue with variable scope when using anonymous delegates.  Here is an
example (compile error in last method)...

private delegate void BorrowCommandDelegate(MySqlCommand command);
private delegate void BorrowReaderDelegate(MySqlDataReader reader);

private void BorrowCommand(BorrowCommandDelegate borrower) {
		
	MySqlConnection connection = null;
	MySqlCommand command = null;
		
	try {
		connection = new MySqlConnection(MyLib.ConnectionString);
		connection.Open();
		command = connection.CreateCommand();
		borrower(command);
	}
	catch (Exception ex) {
		MyLib.TraceIf(command != null, TraceLevel.Info, "Sql: " +
command.CommandText);
		MyLib.Trace(TraceLevel.Error, ex.ToString());
		throw new CustomException(ex.ToString());
	}
	finally {
		if (connection != null && connection.State == ConnectionState.Open) {
		     connection.Close();
		}
		connection = null;
	}
}

private void BorrowReader(string sql, BorrowReaderDelegate borrower) {
			
     MySqlDataReader reader = null;
			
     try {
				
          this.BorrowCommand(delegate(MySqlCommand command) {		
				command.CommandText = sql;
				reader = command.ExecuteReader();
				borrower(reader);
	  });
     }
     finally {
          if (reader != null) {
		reader.Close();
		reader = null;
	  }
     }
}

public List<BusinessObject> GetObjects() {

     List<BusinessObject> businessObjects = new List<BusinessObject>();
     string sql = "SELECT * FROM SomeTable";

     this.BorrowReader(sql, delegate(MySqlDataReader reader) {
				
          while (reader.Read()) {
               BusinessObject businessObject = new BusinessObject() {
                    // Set Properties
               };
               businessObjects.Add(businessObject);   // COMPILE ERROR,
UNKNOWN SYMBOL businessObjects
          }
     });

     return businessObjects;
}
-- 
View this message in context: http://mono.1490590.n4.nabble.com/Variable-Scope-Problem-tp2280481p2280481.html
Sent from the Mono - General mailing list archive at Nabble.com.


More information about the Mono-list mailing list