System.TypeLoadException was unhandled / Inheritance security rules violated while overriding member

Можете ли вы создать .NET 4 версию вашего приложения для тестирования - был невинный вопрос начальства - конечно!

Но после того, как я изменил 27 проектов в нашем Winforms-приложении на .NET 4 и перекомпилировал, при запуске приложения я получаю

System.TypeLoadException was unhandled
. Message=Inheritance security rules violated while overriding member: 'MyCustomORM.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)'. Доступность безопасности переопределяемого метода должна соответствовать доступности безопасности переопределяемого метода.

Hmmm.....

MyCustomORM действительно реализует интерфейс ISerializable и поэтому имеет этот метод

[Serializable]
public abstract class MyCustomORM: IMyCustomORM, ISerializable, ICloneable, ISecurable
{
    public virtual void GetObjectData(SerializationInfo info, StreamingContext context)
    {
        // do stuff here.......
    }
}

и у меня также есть два класса, производных от Exception, которые переопределяют метод GetObjectData.

Но что здесь может быть не так??? Погуглив, я нашел несколько дополнительных атрибутов, которые можно прикрепить к моему методу и пространству имен - так я и сделал:

[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.......
      }
  }
}

но это ничего не меняет.....

Исключение происходит еще до того, как первая строка кода в моем статическом методе Main() достигает....

Я прочесал проект и удалил все ссылки на старые библиотеки .NET 1.1 (да, приложение настолько старое.....) и заменил их аналогами из .NET 4 (в основном log4net). По-прежнему безуспешно....

Есть идеи???

5
задан marc_s 31 January 2012 в 10:24
поделиться