我想禁止通过自定义 FxCop 规则调用特定方法 (MessageBox.Show)。我知道如何获得自定义实现的 FxCop 规则的机制(XML 文件,继承自 BaseIntrospectionRule 等)。我的问题是我在“检查”方法中放入的内容。
以下是我在网络上大量浏览后得出的初稿,但我对在标有?????的两个字段中实际填充的内容感到非常困惑。以下。
我不确定即使这个解决方案,因为它存在,是否会奏效。确保我正在做我想做的事的万无一失的方法是什么——捕获所有对 MessageBox.Show 的调用?
public override ProblemCollection Check(Member member)
{
Method method = member as Method;
if (method == null)
{
return null;
}
MetadataCollection<Instruction>.Enumerator enumerator = method.Instructions.GetEnumerator();
while (enumerator.MoveNext())
{
Instruction current = enumerator.Current;
switch (current.OpCode)
{
case OpCode.Call:
case OpCode.Callvirt:
{
Method method3 = current.Value as Method;
if (method3 == **?????**)
{
Problem item = new Problem(base.GetResolution(**?????**), current);
base.Problems.Add(item);
}
break;
}
}
}
return base.Problems;
}