The fact that your parent object DisposeObject implements IDisposable doesn't mean it can then dispose anything that it references internally. The "objToDispose" can only be disposed if *it* implements IDisposable as well.
protected virtual void Dispose(bool disposing)
{
if (!disposed)
{
if (disposing && objToDispose is IDisposable)
{
((IDisposable)objToDispose).Dispose();
}
}
disposed = true;
}
void FetchObjects(object objProgram)
{
List<object> lstTest = new List<object>();
lstTest.Add(objProgram);
lstTest.Add(new SqlConnection());
Disposeable objDisposeable = new Disposeable(lstTest);
objDisposeable.TestDispose();
}