Практика «Документация»
Если документация хранится отдельно от кода, она очень легко и быстро устаревает и становится неактуальной. Один из способов сохранять документацию в актуальном состоянии — это писать её максимально близко к коду. Иногда для этого используют атрибуты, информацию из которых извлекают и собирают с помощью рефлексии.
Вот эту технику вам и предстоит применить в этой задаче.
В файле Specifier реализуйте методы, возвращающие структурированное описание методов класса, ориентируясь на атрибуты, которыми этот класс размечен.
Начните с изучения класса VkApi, на котором будет тестироваться ваш Specifier. Это всего лишь пример класса, который мы хотим документировать, поэтому ни один метод там не реализован (и реализовывать их не нужно).
Изучите тест Specifier_should. В нём зафиксированы требования к поведению вашей реализации ISpecifier.
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

