thanks for the answers so far, but none of them is exactly what i need: The interface needs to be public because it is the signature the client from outside the dll will use, along with ID and other properties i didn't bother to write in the example to keep it simple.