タグ付けされた質問 「code-access-security」

3
継承セキュリティルールに違反せずに.NET 4以降でISerializableを実装するにはどうすればよいですか?
背景:Noda Timeには、シリアライズ可能な構造体が多数含まれています。バイナリシリアライゼーションは嫌いですが、1.xタイムラインに戻って、それをサポートするための多くのリクエストを受け取りました。ISerializableインターフェースを実装することでサポートします。 Noda Time 2.x が.NET Fiddle内で失敗するという最近の問題レポートを受け取りました。Noda Time 1.xを使用する同じコードは正常に動作します。スローされる例外はこれです: メンバーの上書き中に継承セキュリティルールに違反しました: 'NodaTime.Duration.System.Runtime.Serialization.ISerializable.GetObjectData(System.Runtime.Serialization.SerializationInfo、System.Runtime.Serialization.StreamingContext)'。オーバーライドするメソッドのセキュリティアクセシビリティは、オーバーライドされるメソッドのセキュリティアクセシビリティと一致する必要があります。 これを対象のフレームワークに絞り込みました。1.xは.NET 3.5(クライアントプロファイル)を対象としています。2.xは.NET 4.5をターゲットにします。サポートPCLと.NET Coreの違い、およびプロジェクトファイルの構造には大きな違いがありますが、これは重要ではないようです。 私はなんとかローカルプロジェクトでこれを再現しましたが、解決策を見つけていません。 VS2017で再現する手順: 新しいソリューションを作成する .NET 4.5.1をターゲットとする新しいクラシックWindowsコンソールアプリケーションを作成します。私はそれを「CodeRunner」と呼んだ。 プロジェクトプロパティで、[署名]に移動し、新しいキーでアセンブリに署名します。パスワード要件のチェックを外し、任意のキーファイル名を使用します。 次のコードを貼り付けて置き換えProgram.csます。これは、このMicrosoftサンプルのコードの省略バージョンです。すべてのパスを同じにしたので、完全なコードに戻りたい場合は、他に何も変更する必要はありません。 コード: using System; using System.Security; using System.Security.Permissions; class Sandboxer : MarshalByRefObject { static void Main() { var adSetup = new AppDomainSetup(); adSetup.ApplicationBase = System.IO.Path.GetFullPath(@"..\..\..\UntrustedCode\bin\Debug"); var permSet = new …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.