I have a generic method that takes a request and provides a response.
public Tres DoSomething(Tres response, Treq request)
{/*stuff*/}
No, unfortunately not. If void were a "real" type (like unit in F#, for example) life would be a lot simpler in many ways. In particular, we wouldn't need both the Func and Action families - there'd just be Func instead of Action, Func instead of Action etc.
It would also make async simpler - there'd be no need for the non-generic Task type at all - we'd just have Task.
Unfortunately, that's not the way the C# or .NET type systems work...