Is it possible to somehow simplify an interface? The goal is to provide a noise-reduced API for the user thats going to use it.
An example could be that the interface IFoo has 25 methods defined and I only want to expose 5 of them to the user, how would I do that in a clever and elegant way?
You can’t. An interface is by definition public on all the methods. That’s why it is called a contract.
Try splitting it into a number of interfaces:
This is how it is commonly practiced. However, you cannot prevent the user form knowing your 20 other methods, unless you make IFoo a private interface.
Then you write a wrapper class which just exposes IBaseFoo to the user. IFoo can be cast directly into an IBaseFoo to be returned to the user.