Можете ли вы создать версию приложения для .NET 4 для тестирования был невинный вопрос боссов - конечно!
Но после того, как я изменил наши 27 проектов в нашем приложении Winforms на .NET 4 и перекомпилировал, при запуске приложения я получаю
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.......
}
}
, и у меня также есть два класса, производные от 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.......
}
}
}
, но это ничего не меняет .....
Исключение случается дажедо того, как моя первая строка кода в моем методе static Main()
была достигнута ...
Я прочесал проект и удалил все ссылки на старые библиотеки .NET 1.1 (да, приложение старое.....) и заменил их своими аналогами .NET 4 (в основном log4net).Все еще не повезло ....
Есть идеи ??