Метод расширения для очистки опций, после вызова

Мне необходимо сделать так, что бы пользователь при желании мог вызвать api один раз с одними параметрами, а после с другими, для этого я хочу написать метод расширения, который после получения данных с сервера, очистит опции.

Все это я уже реализовал при помощи delegate'a, но я так давно не работал с , что не уверен, правильно ли все сделал?

public interface IYears : IEnumerable<IYear>
{
    ...
}

internal class Years
    : BaseApiObject<IYear>, IYears
{
    internal EventHandler Clean;
    internal YearsOptions Options;

    protected void OnClean()
    {
        Clean?.Invoke(this, EventArgs.Empty);
    }

    internal Years(Client client)
        : base(client)
    {
        Options = YearsOptions.None;
    }

    internal void GetData()
    {
        ...

        OnClean();
    }

    // Здесь еще есть
}

public static class YearsExtensions
{
    public static IYears With(this IYears obj, YearsOptions options)
    {
        ((Years)obj).Options = options;
        return obj;
    }

    public static IYears Clean(this IYears obj)
    {
        ((Years)obj).Clean = new EventHandler((s, e) =>
        {
            ((Years)obj).Options = YearsOptions.None;
            ((Years)obj).Clean = null;
        });
        return obj;
    }
}

Теперь можно вызывать апи так:

YearsOptions options = new YearsOptions(...);
foreach(IYear in _apiClient.Years.With(options).Clean())
{
    ...
}

Все это дело проверить на данный момент нет возможности, хотелось бы узнать на взгляд, все ли нормально?


Ответы (0 шт):