gpt4 book ai didi

winforms - System.TypeLoadException 未处理/覆盖成员时违反了继承安全规则

转载 作者:行者123 更新时间:2023-12-04 18:13:04 25 4
gpt4 key购买 nike

你能否创建一个 .NET 4 版本的应用程序进行测试是老板们无辜的问题——当然!

但是在我将 Winforms 应用程序中的 27 个项目更改为 .NET 4 并重新编译后,在启动应用程序时,我得到了

System.TypeLoadException was unhandled
Message=Inheritance security rules violated while overriding member: 'MyCustomORM.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)'. Security accessibility of the overriding method must match the security accessibility of the method being overriden.



嗯……
MyCustomORM确实实现了 ISerializable接口(interface),因此有这个方法
[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)。还是没有运气......

有任何想法吗??

最佳答案

MyCustomORM 类所在的程序集是否标有 SecurityTransparentAttribute?如果是这样,则问题源于 .NET 3.5 和 .NET 4.0 之间的安全透明模型的变化。对于您的测试场景,您可能希望简单地选择使用旧的透明机制。为此,请添加以下程序集级属性:

[assembly: SecurityRules(SecurityRuleSet.Level1)]

有关 Level1 和 Level2 透明度模型之间差异的更多信息,请参阅 http://blogs.msdn.com/b/shawnfa/archive/2009/11/12/differences-between-the-security-rule-sets.aspx .

关于winforms - System.TypeLoadException 未处理/覆盖成员时违反了继承安全规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9077907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com