1

リフレクションを使用してゲームのコンテンツ (.xml) を逆シリアル化するカスタム XMLDeserializer を開発しました。しかし、コンテンツ パイプラインのコンパイル時にエラーが発生します。

エラー 1 コンテンツの構築で MethodAccessException がスローされました: セキュリティの透過的なメソッド 'DynamicClass.ReflectionEmitUtils(System.Object)' によるセキュリティ クリティカルなメソッド 'System.Reflection.Assembly.get_PermissionSet()' へのアクセスに失敗しました。

アセンブリ 'mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' は、AllowPartiallyTrustedCallersAttribute でマークされ、レベル 2 のセキュリティ透過性モデルを使用します。レベル 2 の透過性により、AllowPartiallyTrustedCallers アセンブリのすべてのメソッドが既定で透過的なセキュリティになります。これが、この例外の原因である可能性があります。

このコードをコメントアウトすると、エラーは発生しません。

// Add item to the collection
if (typeof(IList).IsAssignableFrom(collectionType))
{
   collectionType.GetMethod("Add").Invoke(collectionObject, new[] { itemObject });
}
else if (typeof(IDictionary).IsAssignableFrom(collectionType))
{
   collectionType.GetMethod("Add").Invoke(collectionObject, new[] { itemType, itemObject });
}

私のアセンブリには、mscorlib アセンブリのコードを呼び出す権限がないようです。コンソール アプリケーションでメソッドを呼び出すと、機能します。

手伝って頂けますか?

ありがとう

4

1 に答える 1