First of all, why are you creating an interface for each object type. A repository would usually just have Get, Create, Update, Delete methods for example, maybe a generic Get... where the IRepository is also generic.
You could have a second interface inheriting IRepository
which has the Sync
method and only the Bulk repository implements that one. In this case you can still access both repositoriesmethods defined by
IProductRepository`
Or have a base class for Bulk repositories which implements/defines sync.