テストのためにアプリケーションの.NET 4バージョンを作成できますか?はボスの無実の質問でした。System.TypeLoadExceptionが処理されていません/メンバーをオーバーライドしている間に継承セキュリティルールに違反しました
しかし、私は、.NET 4に私たちのWinformsのアプリケーションで私たちの27件のプロジェクトを変更し、再コンパイルした後、アプリを起動したとき、私は
を取得System.TypeLoadExceptionは、未処理
メッセージ= 継承しましたメンバーをオーバーライドしている間にセキュリティ規則が違反しました: 'MyCustomORM.GetObjectData(System.Runtime.Serialization.SerializationInfo、System.Runtime.Serialization.StreamingContext)'。 オーバーライドするメソッドのセキュリティアクセシビリティは、オーバーライドされるメソッドのセキュリティアクセシビリティに一致する必要があります。
うーん.....
MyCustomORM
は確かISerializable
インタフェースを実装し、したがって、この方法
[Serializable]
public abstract class MyCustomORM: IMyCustomORM, ISerializable, ICloneable, ISecurable
{
public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
{
// do stuff here.......
}
}
を持っており、私はまたGetObjectData
を上書きException
から派生する2つのクラスを持っています方法。
しかし、何が間違っている可能性がありますか?周りのグーグルで私はいくつかの追加の属性が私の方法および名前空間に固執することが判明 - 私がやった:
[assembly: SecurityPermission(SecurityAction.RequestMinimum, Execution = true)]
namespace MyApplication.ORM
{
[Serializable]
public abstract class MyCustomORM: IMyCustomORM, ISerializable, ICloneable, ISecurable
{
[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.SerializationFormatter)]
public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
{
// do stuff here.......
}
}
}
が、それは何も変わりません.....
例外も私の最初の行の前に起こります私のstatic Main()
メソッドのコードに到達しました....
私はプロジェクトを徹底解読し、古い.NET 1.1ライブラリへの参照を削除しました(はい、そのアプリは古いです.....)。 .NET 4の対応版(主にlog4net)と互換性があります。まだ幸運はありません....
アイデア??
この動作を制御する 'フラグ'があります。どこでも思い出せません。このエラーは、そこに 'virtual'を使用できないことも示しています。 – leppie
また、 'GetObjectData'は、(抽象型のインスタンスに)再インスタンス化できないので、抽象クラスでは意味をなさない。 – leppie