There is no delegate equivalent of passing around an instance of IFoo:
interface IFoo
{
void Bar<T>();
}
This is known as first-class polymorphism.
Classes with methods are strictly more powerful than delegates, but they shouldn't be. It's even worse than that actually, because you can't even create an open instance delegate to a generic interface or abstract class method (you'll get a runtime error, not even a static error).