CA2126:类型链接请求需要继承请求
类型名 |
TypeLinkDemandsRequireInheritanceDemands |
CheckId |
CA2126 |
类别 |
Microsoft.Security |
是否重大更改 |
是 |
原因
公共的非密封类型用链接请求保护并且具有可重写的方法,该类型或方法都未用继承请求进行保护。
规则说明
对方法或其声明类型的链接请求要求该方法的直接调用方具有指定的权限。 对方法的继承请求要求重写方法具有指定的权限。 对类型的继承请求要求派生类具有指定的权限。
如何解决冲突
若要修复与该规则的冲突,请使用与链接请求具有相同权限的继承请求来保护类型或方法。
何时禁止显示警告
不要禁止显示此规则发出的警告。
示例
下面的示例演示一个与该规则冲突的类型。
Imports System
Imports System.Security.Permissions
Namespace SecurityLibrary
<EnvironmentPermission(SecurityAction.LinkDemand, Read:="PATH")> _
Public Class TypesWithLinkDemands
Protected Overridable Sub UnsecuredMethod()
End Sub
<EnvironmentPermission(SecurityAction.InheritanceDemand, Read:="PATH")> _
Protected Overridable Sub SecuredMethod()
End Sub
End Class
End Namespace
using System;
using System.Security.Permissions;
namespace SecurityLibrary
{
[EnvironmentPermission(SecurityAction.LinkDemand, Read = "PATH")]
public class TypesWithLinkDemands
{
public virtual void UnsecuredMethod() {}
[EnvironmentPermission(SecurityAction.InheritanceDemand, Read = "PATH")]
public virtual void SecuredMethod() { }
}
}
using namespace System;
using namespace System::Security::Permissions;
namespace SecurityLibrary
{
[EnvironmentPermission(SecurityAction::LinkDemand, Read = "PATH")]
public ref class TypesWithLinkDemands
{
protected:
virtual void UnsecuredMethod() {}
[EnvironmentPermission(SecurityAction::InheritanceDemand,
Read = "PATH")]
virtual void SecuredMethod() {}
};
}