public void Foo2 <T> (IFoo <T> t) { t?.Call(); }
public void Foo <T> (IFoo <T> t) where T : class { t?.Call(); var x = t?.Call(); }
U Foo <T, U> (IFoo <T> t) { return(t?.Call()); }