public class Car
{
public int TyresCount { get; set; }
public int SpareTyreCount { get; set; }
public int FrontTyres { get; set; }
public int RearTyres { get; set; }
}
public class CarAssembly
{
public async Task<Car> Process(Car car)
{
car = await AssembleFrameAsync(car);
//Option A
SetTyreCount(car);
//or Option B
SetTireCountNonStatic(car);
//or Option C
await Task.Run(() => SetTyreCountAsync(car));
car = await AssembleEngineAsync(car);
return car;
}
public async Task<Car> AssembleFrame(Car car)
{
car = await httpclient.GetAsync("GetFrame");
return car;
}
//Option A
private static void SetTyreCount(Car car)
{
car.TyresCount = car.FrontTyres + car.RearTyres;
car.SpareTyreCount = 1;
}
//Option B
public void SetTyreCountNonStatic(Car car)
{
car.TyresCount = car.FrontTyres + car.RearTyres;
car.SpareTyreCount = 1;
}
//Option C
public void SetTyreCountAsync(Car car)
{
car.TyresCount = car.FrontTyres + car.RearTyres;
car.SpareTyreCount = 1;
}
public async Task<Car> AssembleEngineAsync(Car car)
{
car = await httpclient.postAsync("assembleEngine");
return car;
}
}
У меня есть этот класс CarAssembly , который имеет метод Процесс , который вызывает асинхронный c метод AssembleFrame , а затем он должен вызвать другой метод для GetTyreCount , который является очень простым методом для получения счетчика, как упомянуто выше с указанными выше тремя опциями OptionA, OptionB, Option C, который является правильным способом вызова этого простого метода, связанного с процессором. Даже если варианты, которые я изложил, не верны, пожалуйста, поделитесь своими мыслями, каков правильный подход. Предположим, что это выполнение класса в WebAPI (без пользовательского интерфейса)