Это часть моего кода в классе (** включает в себя вещи, которые должны быть преобразованы в полимеры):
public async Task <IEnumerable<**ShopifySharp.Customer**>> GetListAsync(string URLShopify, string AccessToken, ListFilter Filter = null, int MaxReturns = 250)
{
var service = new **ShopifySharp.CustomerService**(URLShopify,AccessToken);
var total = await service.CountAsync(Filter);
var data = new List<**ShopifySharp.Customer**>();
var pageOfData = await service.ListAsync(filter);
data.AddRange(NewItem);
return data;
}
Я хочу назвать это возвращаемыми полученными заказами / клиентами и т. Д. (IEnumerable) на основена какой тип это. Если я сделаю копию класса и внесу изменения вручную, это сработает. Но я хочу использовать тот же базовый класс и просто использовать правильные замены в производном классе. Поэтому ShopifySharp.CustomerService и ShopifySharp.Customer должны быть заменены.
Я думаю, что дженерики - это путь, но бороться с этим. Таким образом, возвращаемый параметр должен быть изменен в зависимости от типа (Заказ / Клиент и т. Д.) И Сервиса (ShopifySharp.CustomerService), который будет ShopifySharp.OrderService в случае Заказа. И новый список (для ShopifySharp.Order) такой же, как в возвращаемом значении.
В этом случае у заказов и клиентов одинаковые методы. Так что ошибок там не будет. Я буду использовать то же самое в нескольких методах в классе, например, Get и Update.
Чтобы уточнить:
Когда я хочу клиентов, тогда изменения будут:
public async Task <IEnumerable<ShopifySharp.Customer>> GetListAsync(string URLShopify, string AccessToken, ListFilter Filter = null, int MaxReturns = 250)
var service = new ShopifySharp.CustomerService(URLShopify,AccessToken);
var data = new List<ShopifySharp.Customer>();
Когда я хочу Order, тогда изменения будут:
public async Task <IEnumerable<ShopifySharp.Order>> GetListAsync(string URLShopify, string AccessToken, ListFilter Filter = null, int MaxReturns = 250)
var service = new ShopifySharp.OrderService(URLShopify,AccessToken);
var data = new List<ShopifySharp.Order>();
Остальная часть кода останется неизменной, так как они имеют одинаковые свойства и методы.