Метод расширения для очистки опций, после вызова
Мне необходимо сделать так, что бы пользователь при желании мог вызвать api один раз с одними параметрами, а после с другими, для этого я хочу написать метод расширения, который после получения данных с сервера, очистит опции.
Все это я уже реализовал при помощи delegate'a, но я так давно не работал с c#, что не уверен, правильно ли все сделал?
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())
{
...
}
Все это дело проверить на данный момент нет возможности, хотелось бы узнать на взгляд, все ли нормально?