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