我正在尝试开发一个自定义的fxcop规则,以检查以基类名称结尾的派生类的名称。

我主要关心的是Fxcop.Sdk中是否有任何属性,以了解该特定类是否派生自任何基类?如果是,那怎么办?

如何执行此规则?

最佳答案

是的,可以。看一下下面的图片:



您在此处看到的是introspector的屏幕截图,它是一个可帮助您开发FxCop规则的工具。

如您所见,每个类都有一个属性BaseTypeBaseClass。您可以使用它们来检查类是否继承自任何东西。

请注意,在自省模型中,例如,未从任何事物派生的类都显示为从Object派生。

您可以跳过那些(以及任何其他可能的错误):

public override ProblemCollection Check(TypeNode type)
{
    ClassNode classNode = type as ClassNode;
    if (classNode == null)
        return;
    if (classNode.BaseType == null)
        return;
    if (classNode.BaseType == FrameworkTypes.Object)
        return;

    // Namechecking logic

    return Problems;
}

07-28 06:13