Практика «Документация»
Если документация хранится отдельно от кода, она очень легко и быстро устаревает и становится неактуальной. Один из способов сохранять документацию в актуальном состоянии — это писать её максимально близко к коду. Иногда для этого используют атрибуты, информацию из которых извлекают и собирают с помощью рефлексии.
Вот эту технику вам и предстоит применить в этой задаче.
В файле Specifier реализуйте методы, возвращающие структурированное описание методов класса, ориентируясь на атрибуты, которыми этот класс размечен.
Начните с изучения класса VkApi
, на котором будет тестироваться ваш Specifier
. Это всего лишь пример класса, который мы хотим документировать, поэтому ни один метод там не реализован (и реализовывать их не нужно).
Изучите тест Specifier_should
. В нём зафиксированы требования к поведению вашей реализации ISpecifier
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
using System.Linq; using System.Reflection; namespace Documentation { public class Specifier<T> : ISpecifier { public string GetApiDescription() => typeof(T).GetCustomAttributes() .OfType<ApiDescriptionAttribute>().FirstOrDefault()?.Description; public string[] GetApiMethodNames() => typeof(T).GetMethods() .Where(m => m.GetCustomAttributes().OfType<ApiMethodAttribute>().Any()) .Select(m => m.Name) .ToArray(); |
Стоимость решения этой задачи всего 100 рублей, закажи решения у меня 🙂
Внимание! Решение было обновлено в 2021