Open braveyp opened 2 months ago
Hi @braveyp,
these responses are generated from our specification. The specification closely maps the server-side of things and there simply is no common base class.
We could potentially introduce a helper (similar to what is planned for PIT #5149) to simplify usage.
Couldn't you just simply use a (local) function to which you pass all the required properties?
public void DoSomethingWithMyDocuments<TDocument>(IEnumerable<TDocument> documents, long took)
{
// ...
}
DoSomethingWithMyDocuments(searchResponse.Documents, searchResponse.Took);
// ...
DoSomethingWithMyDocuments(scrollResponse.Documents, scrollResponse.Took);
I did end up doing something along those lines.
Elastic.Clients.Elasticsearch version: 8.15.6
Elasticsearch version: 8.15.0
.NET runtime version: 4.8
Operating system version: Windows 11
Description of the problem including expected versus actual behavior:
SearchResponse and ScrollResponse do not have a common base class so the simple bulk operation of making an initial Search and then iterating through the results with subsequent Scroll requests requires extra complexity in the client application - you either have to write two near identical functions (they differ by the type of the response input) to process the responses or create two wrapper classes to give a common interface and write one handler.