我有一个实现IPermission
类:有没有办法在自定义System.Security.IPermission实现中修复此FxCop CA2103警告?
public class MySecurityPermission : IPermission
{
private string[] _demandRoles;
private string[] _denyRoles;
public MySecurityPermission(string[] demandRoles, string[] denyRoles)
{
this._demandRoles = demandRoles;
this._denyRoles = denyRoles;
}
}
现在,IPermission接口需要一个Copy()
方法,我实现为:
public IPermission Copy()
{
return new MySecurityPermission(this._demandRoles.ToArray(), this._denyRoles.ToArray());
}
注意,.ToArray()
电话是有,因为它使关闭/复制数组,并返回一个新的数组实例,而不是传递相同的数组。
这导致FxCop的CA2103:
“评估,可能的安全漏洞如下: 在 'MySecurityPermission.Copy()',返回值来“Enumerable.ToArray呼叫 (这 IEnumerable的)”被传递到‘MySecurityPermission’ 构造“。
有没有办法来“修复”呢?我不确定为什么FxCop会抱怨。如果有人能解释它,那会很棒。
如果将字段标记为'readonly',会发生什么? – vcsjones
您的阅读乐趣多一点信息(不知道这是否会帮助):http://msdn.microsoft.com/en-us/library/ms182309(v=vs.100).aspx –
@vcsjones - 这是我最初的反应也是如此,而且该接口还需要一个'FromXML()'方法,在这里我需要基于XML设置在这些阵列中的值,因此它们不能只读:( – CodingWithSpike