0

AutoMapper が Silverlight 5 の内部型やプロパティにマップできるようにアプリケーションを構成するにはどうすればよいですか? たとえば、次のタイプがあります。

internal class SomeInfo
{
    public String Value { get; set; }
}

この型を宛先として Mapper.DynamicMap を呼び出そうとすると、実行時に次のエラーが表示されます。

セキュリティ透過メソッド 'DynamicClass.SetValue(System.Object, System.Object)' によるセキュリティ クリティカル タイプ 'Acme.SomeInfo' へのアクセスに失敗しました。

最初にクラスをインスタンス化してから、インスタンスを DynamicMap に渡し、プロパティの内部セッターを使用してクラススコープを public に変更しようとしました。また、クラスを [SecuritySafeCritical] 属性でマークしました。これらのすべてのテストで、同じエラー メッセージが表示されました。

これを乗り越えることができた唯一の方法は、クラスをパブリック スコープとパブリック セッターで完全に公開することです。もちろん、これは問題です。私は他の開発者が使用するクラス ライブラリを開発しており、「内部」スコープを使用することは、実装の詳細を隠し、コードが意図したとおりにのみ使用されるようにするための意図的な戦略です ( DDD および CQRS からのパブリック セッターの概念はありません)。

とはいえ、AutoMapper が内部型やプロパティを操作できるようにするにはどうすればよいでしょうか?

(注: クラス ライブラリは SL5 用に構築されており、昇格された信頼でブラウザー外で実行するように構成されたクライアント アプリで使用されます。)

4

1 に答える 1

1

これは Silverlight の制限です。外部アセンブリからのプライベート/保護/内部メンバーへのリフレクションは許可されません。以下を参照してください。

http://msdn.microsoft.com/en-us/library/stfy7tfc(VS.95).aspx

簡単に言えば、AutoMapper はアセンブリの内部メンバーにアクセスできません。

于 2012-07-09T23:26:57.673 に答える