The question makes no sense. "Dependency injection" is
not a problem to be solved, it is a technique used to solve other problems, a widely-known design pattern. Please see:
http://en.wikipedia.org/wiki/Dependency_injection[
^].
Now, if you explain
your problem instead of what is written in your post, the actual problem about "UserInfo", "Report", etc., you classes which you never described, we will gladly try to help you, but no one is going to guarantee you that it will be resolved using dependenfcy injection. When you need to ask a question on some problem, you should not specify the method of solving this problem at the same time, it would be incorrect.
[EDIT]
The problems of "global" objects (it would be more correctly to discuss object
sharing instead, some weaker concept) in ASP.NET is reduced to the fundamental facts: HTTP protocol is
stateless, and all the lifetime of the application (code behind) lies in single HTTP request/response. Not only the global memory objects cannot be shared between different pages, they are not shared between postbacks. Please see:
http://en.wikipedia.org/wiki/Http[
^],
http://en.wikipedia.org/wiki/Stateless_protocol[
^].
This imposes draconian limitation on the Web programming, and the approaches to implementation of states include the following:
http://en.wikipedia.org/wiki/Http#HTTP_session_state[
^].
Generally, you need to store the state somewhere. In practice, if we are discussing user information, some database is most usually used. The databases already provide
transactional mechanisms which will allow you not to worry about synchronization of request from different users. Using something else (for example, some files on the server side) would be utterly impractical but possible in principle…
—SA