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