I have seen two different approaches for creating generic repositories. What are differences between those two approaches (pros and cons) ? Please diregard difference in the
The biggest difference is that IRepository is bound to a single type while an IRepository is potentially bound to multiple types. Which one is appropriate is highly dependent upon your particular scenario.
Generally speaking I find IRepository to be more useful. At the time of use it's extremely clear what the contents of IRepository are (T). On the other hand it's not clear from a given IRepository what is contained inside of it.
In cases where I have to store multiple types of objects, I usually create a map of IRepository instances. For instance: Dictionary.