これはReflection.Emitを使用するための最初の試みです。私は動的に提供されたオブジェクトのプロキシを構築しています。プロキシは、publicプロパティへのアクセスを提供されたオブジェクトに渡します。私が受けてるのエラーがある:アクセス方法への方法により、 試み「ProxyObject.get_AccessorName()」 「NS.CoreObject.get_AccessorName:オブジェクト上のReflection.Emitを使用して別のオブジェクトからプロパティ値を取得
プロパティアクセサ「AccessorName」「ProxyObject」は、次の例外をスローした
()に失敗しました。
これは、私が想定して収集できることから、自動的に生成されるプロパティゲッターメソッドがプライベートで非表示になっているためです。しかし、私はMethodBuilder
を使用してこれを回避するにはどうすればよいですか?
Create DynamicMethod to assign value to a property?という投稿によると、メソッドをターゲットモジュールに「関連付ける」と宣言することでDynamicMethodで行うことができますが、完全なクラスを構築する必要があります。 Reflection.Emitで達成できる同等の「関連」はありますか?
これは私が実行しようとしている基本的な操作なので、わかりやすい単純なものだと確信しています。
これは、MethodAccessExceptionです。それは、プロパティが実際に公開されていないように確信しています。これをC#で最初に作ってください。それから得られるILは、あなたのemitコードでも非常に役立ちます。 –
もちろん、あなたのクラスが公開されていないときは、公共財産は何も意味しません。私の頭では、このタイプは同じモジュール内で定義されていました。さらに別の* "私はこれで時間を無駄にしましたか?" – redman