Exemplo n.º 1
0
        private bool AssemblyIsValid() => Wrappers.DoSafe(() =>
        {
            var properties = GetAllProperties();

            var apiMethodAnnotatedProperties = properties
                                               .Where(p => p.GetCustomAttributes <ApiRequestProcessorAttribute>().Any())
                                               .ToList();
            if (!apiMethodAnnotatedProperties.Any())
            {
                LogWarning("Assembly does not contain any annotated API members, failed to generate docs");
                return(false);
            }

            var staticRequestProcessorProperties = properties
                                                   .Where(p => p.GetGetMethod().IsStatic &&
                                                          p.ExtendsOrImplements <IRequestProcessor>())
                                                   .ToList();

            var incorrectAnnotatedProperties = apiMethodAnnotatedProperties
                                               .Except(staticRequestProcessorProperties)
                                               .ToList();
            if (incorrectAnnotatedProperties.Any())
            {
                var incorrectAnnotatedPropertiesDescription = string.Join("\n",
                                                                          incorrectAnnotatedProperties.Select(
                                                                              p => $"{p.PropertyType.GetGenericArguments().First().FullName}.{p.Name}"));
                LogWarning(
                    $"The following properties are annotated as API members but do not implement IRequestProcessor:\n{incorrectAnnotatedPropertiesDescription}");
                return(false);
            }

            _apiMemberPropertyInfos = apiMethodAnnotatedProperties;
            return(true);
        });
Exemplo n.º 2
0
        private bool WriteAllSections() => Wrappers.DoSafe(() =>
        {
            var sections = SplitSections(_apiMemberPropertyInfos);

            foreach (var section in sections)
            {
                WriteOneSection(section);
                _builder.AppendLine(SectionSeparatorPattern);
            }

            return(true);
        });
Exemplo n.º 3
0
 private bool TryLoadTargetAssembly(Type markerType) => Wrappers.DoSafe(() =>
 {
     _targetAssembly = Assembly.GetAssembly(markerType);
     LogDebug($"Assembly {_targetAssembly.FullName} loaded");
     return(true);
 });