0

誰かが「new MyClass()」とMyClass Inherit from EntityBaseを書いたときにコンパイラエラーを取得する方法はありますか? 私は開発者がこれを書くのを止めたいです。CodeIssue プロジェクトでこれを行うことはできますか?

4

1 に答える 1

3

絶対!

これはまさに、CodeIssues が処理するように設計された種類のポリシーです。ノードを検査する CodeIssue を作成できるはずですObjectCreationSyntax。継承をチェックするコードは次のようになります (現時点ではコンパイラに近くないため、これはメモリからのものです)。

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 に答える