当有人写“new MyClass()”和 MyClass 从 EntityBase 继承时,有没有办法得到编译器错误。我喜欢阻止开发人员写这个。我可以用 CodeIssue 项目做到这一点吗?
问问题
127 次
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 回答