0

当有人写“new MyClass()”和 MyClass 从 EntityBase 继承时,有没有办法得到编译器错误。我喜欢阻止开发人员写这个。我可以用 CodeIssue 项目做到这一点吗?

4

1 回答 1

3

绝对地!

这正是 CodeIssues 旨在处理的那种策略。您应该能够编写一个检查ObjectCreationSyntax节点的 CodeIssue。检查继承的代码看起来像(目前不在编译器附近,所以这是来自内存):

var entityBaseType = document.Project.GetCompilation(cancellationToken).GetTypeByMetadataName("FullyQualifiedTypeName.EntityBase");
var typeInfo = document.GetSemanticModel(cancellationToken).GetTypeInfo(node);
if (typeInfo.Type.BaseType.Equals(entityBaseType))
{
    return new CodeIssue(...);
}

return null;
于 2013-04-12T05:53:29.957 回答