I would like to ensure that a method (actually a constructor in my case) is never called explicitly from code. It should only be called through reflection at runtime. To do
You can use the ObsoleteAttribute constructor that takes a boolean with which you can indicate that calling the method is a compilation error:
[Obsolete("Don't use this", true)]
However, if I were you, I'd reconsider my design, as doing this isn't a sign of a well-designed API.