MissingMethodException

リフレクションでプロパティに値をセットしようとしたところ、意外な例外がスローされてきたのでちょっとびっくりした。その例外が MissingMethodException 。

通常、存在しないクラス メソッドにコードでアクセスしようとすると、コンパイル エラーが生成されます。MissingMethodException は、厳密な名前で参照されていないアセンブリの、名前変更または削除されたメソッドに動的にアクセスしようとした場合に対処するために用意されています。MissingMethodException は、変更されたアセンブリの存在しないメソッドに、従属するアセンブリのコードがアクセスしようとした場合にスローされます。

MissingMethodException クラス

プロパティ名やその他の情報を取得できているので、存在しないプロパティ(メソッド)と言うことはないはず…と悩んだが、よくよく見るとセットする値の型とプロパティの型が一致していないことに気づきました。

型が異なればメソッドとしては存在しないことになるわけです。妙に納得してしまいました。