There should be a base class that the other wrappers inherit from that does this logic via the constructor.
public class ZSTDWrapper
{
private readonly OSPlatform _platform;
private readonly BenchmarkSender _sender;
public ZSTDWrapper()
{
this._platform = new OperatingSystemDeterminator().GetOperatingSystem();
this._sender = new BenchmarkSender();
}
There should be a base class that the other wrappers inherit from that does this logic via the constructor.