Re[3]: partial methods
От: RushDevion Россия  
Дата: 29.10.24 17:59
Оценка:
C>А нафига, собственно, без необходимости наследования?

Ну а зачем заводить лишний уровень абстракции, если можно без него обойтись?

Скажем, в случае автогенерации HTTP-клиента, это может выглядеть вот так:
// Client.generated.cs
partial class ApiClient {
   public async Task SendRequest(HttpRequestMessage request) {
    OnBeforeRequest(request);
    // .. логика отправки запроса, получение ответа
    OnAfterResponse(response);
  }

  partial void OnBeforeRequest(HttpRequestMessage request);

  partial void OnAfterResponse(HttpRequestMessage response);
}

// И это дает возможность простой кастомизации запросов/ответов
// Client.Customization.cs
partial class ApiClient {
  partial void OnBeforeRequest(HttpRequestMessage request) {
    request.Headers.Add("X-Header", "SomeValue");
  }
}


Или взять другой пример — редактор форм в WinForms/WPF.
// MainWindow.xaml.cs
public partial class MainWindow : Window
{
  public MainWindow()
  {
    InitializeComponent();
  }
    
  // Здесь располгается наш код (обработчики событий и т.п.)
}

// MainWindow.g.i.cs - автосгенерированый файл
public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {
 // Здесь куча автосгенерированного кода по созданию, инициализации, настройке, позиционированиию компонентов,
 // которые мы мышкой накидали в визуальном редакторе
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.