与roslyn的CodeIssue项目

时间:2013-04-12 05:18:59

标签: c# roslyn

当有人从EntityBase写“new MyClass()”和MyClass Inherit时,有没有办法获得compilererror。 我想阻止开发人员写这个。我可以使用CodeIssue项目执行此操作。

1 个答案:

答案 0 :(得分: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;