C#には「リフレクション」という便利な機能があります。
これは、メソッドなどを動的に呼び出したり、インスタンスを動的に生成したりすることができる機能です。

ただ、この機能、実はprivateに設定したメンバも呼び出してしまうことができます。
つまり、他から呼び出されると困るからprivateにしたメソッドがあったとしたら、それを利用者が意図的に呼び出すことが出来てしまう、という訳です。
まあ、利用者がprivateメンバまでクラス構造を理解していないとできませんが。
注意:フィールドおよび構造体の引数なしコンストラクタに対するアクセスを検出する方法はありません。