You can design the API as nicely as possible but there is just some information that can't be communicated that way. Now the library can ship with some compile-time code (instead of run-time code) that can analyze your usage of the library and provide feedback.
I'm also curious if C# begins to evolve some meta-programming constructs, letting you write "macros" or syntax extensions in C#. Everyone hates on the C preprocessor (as do I and for good reason) but few compiled languages provide a truly suitable replacement. Back when I was doing C# on a daily basis I would use reflection to generate DynamicMethod instances and emit the IL instructions in 2.0; later being able to convert Expressions to machine code was a step up for the cases where its needed and the T4 template engine works ok for other scenarios.
Now that I'm doing iOS full time that's my one major complaint - complete lack of any meta-programming facility. (That and they took away __conversion)