Код: Выделить всё
public async Task Foo(string Id, IList inputSettingsTypes1, Func invokeBackEndFn)
{
T resultfromService1 = await invokeBackEndFn(service1);
T resultfromService2 = await GetResultFromService2(invokeBackEndFn, Id, inputSettingsTypes1);
T mergedResult = MergeResult(resultfromService1, resultfromService2, Id);
return mergedResult;
}
Код: Выделить всё
public async Task Foo(string Id, IList inputSettingsTypes2, Func invokeBackEndFn)
{
T resultfromService1 = await invokeBackEndFn(service1);
T resultfromService2 = await GetResultFromService2(invokeBackEndFn, Id, inputSettingsTypes2);
T mergedResult = MergeResult(resultfromService1, resultfromService2, Id);
return mergedResult;
}
Код: Выделить всё
TeamsSettingTypeВ настоящее время я создал метод Overloaded Foo, чтобы принимать разные типы параметров, и продублировал логику и реорганизовал логику, не связанную с типом, в общий метод. поэтому оба метода Foo могут использовать их повторно.
Код: Выделить всё
public enum UserSettingType
{
Meeting,
Permission
// few other values
}
public enum TeamsSettingType
{
MeetingPolicy,
PermissionPolicy
// few other values
}
например:
Код: Выделить всё
if(UserSettingType.Contains(UserSettingType.Permission))
invokeBackendFn(MyService2);
if(UserSettingType.Contains(TeamsSettingType.PermissionPolicy))
invokeBackendFn(MyService2);
Однако , это выглядит некрасиво, я хочу понять, есть ли лучший способ справиться с такими сценариями с помощью некоторых шаблонов проектирования на C#.
Подробнее здесь: https://stackoverflow.com/questions/789 ... same-logic
Мобильная версия