Θέμα λογικής διάρθρωσης είναι...
Δεν λύνεται με καμία συνταγή εκτός (ίσως) από την ακόλουθη:
Δόμησε τον κώδικά σου από το γενικότερο στο ειδικότερο και βάλε το ειδικότερο να "μιλάει" με το γενικότερο με τρόπους απολύτως ανεξάρτητους από οτιδήποτε άλλο τους οποίους θα καθορίζει αποκλειστικά το γενικότερο.
Δηλαδή στην περίπτωσή σου: αν το γενικότερο "φυλάσει" μια παράμετρο σε ένα Session variable, το ειδικότερο δεν πρέπει να το γνωρίζει αυτό και δεν πρέπει (παρά το γεγονός ότι έχει πρόσβαση στα Session variables) να πηγαίνει κατευθείαν στο Session (με Session["something"]) και να πάιρνει την τιμή. Αντίθετα το γενικότερο θα πρέπει να διαθέτει ένα public μηχανισμό (property ή method) τον οποίο θα χρησιμοποιεί το ειδικότερο για να πάρει τα δεδομένα που θέλει.
Η πρακτική να τα διαβάζεις όλα από κάποιου είδους κοινά publicly available resources (μεταβλητές) δεν είναι καλή και ειδικά αν αυτά τα resources είναι τα Application ή τα Session variables...
Σαν βοηθητική τεχνική σου προτείνω να εξαφανίζεις μία μία όλες τις application & session scope μεταβλητές σου μέσα σε classes και να διορθωνεις ένα ένα τα compile time errors. (Ελπίζω να τις έχεις μέσα σε Properties ή Methods και να μην τις χρησιμοποιείες παντού με Appliction["xxx"] ή Session["xxx"] κλήσεις γιατί θα δυσκολευτείς πολύ).
Μην θεωρείς τίποτα δεδομένο εκτός από τα πράγματα που μπορεί να ελέγξει ο compiler.
Π.χ.ο compiler δεν μπορεί να ελέγξει τίποτε για την έφραση Session["blahblah"] και (ειδικά αν υπάρχει αυτούσια 10 φορές σε διάφορα σημεία του κώδικά σου. Αν όμως αντί για Session["blahblah"] έχεις δώσει κάτι σαν MyClass.Blahblah, (όπου MyClass.Blahblah είναι κάποιο property του στύλ: class MyClass { public object Blahblah { get { return Session["blahblah"]; } } }), τότε μόλις αλλάξει assembly το MyClass ο compiler θα σου βρεί όλα τα σημεία που πρέπει να διορθώσεις (τα οποία είναι και τα πιθανά σημεία λάθους που τώρα αναζητάς με trial&error).
good luck
rousso
υ/γ: Προσεκτικά μόνο στα μεγάλα restructures μη γίνει κανένα κακό. Ελπίζω να το το έχεις σε source control.
rousso