/// <summary> /// Überprüft, ob es eine Create-Klasse gibt, die eine Instanz des Builders erzeugen kann. /// </summary> /// <param name="context"></param> /// <param name="testProject"></param> /// <param name="builderSymbol"></param> /// <param name="builderCopSettings"></param> private void AnalyseFactory(SymbolAnalysisContext context, Project testProject, INamedTypeSymbol builderSymbol, BuilderCopSettings builderCopSettings) { ITypeSymbol createClassSymbol = testProject.GetBuilderFactorySymbol(builderCopSettings); if (createClassSymbol == null) { return; } foreach (IMethodSymbol method in createClassSymbol.GetMembers().OfType <IMethodSymbol>()) { if (method.MethodKind == MethodKind.Ordinary && TypeHelper.AreTypesEqual(method.ReturnType, builderSymbol)) { return; } } /* Die Diagnostic geht auf die Entity-Klasse, weil dass die Klasse ist, die untersucht wird. * Wird die Location auf den Builder gelegt, fliegt eine Exception, da der Builder nicht Teil des Kompilats ist, * welches analysiert wird.*/ context.ReportFactoryMethodForBuilderExpected(context.Symbol); }