Объедините классы, которые отличаются только вызовами асинхронных/синхронных методов.C#

Место общения программистов C#
Anonymous
Объедините классы, которые отличаются только вызовами асинхронных/синхронных методов.

Сообщение Anonymous »

Я хочу удалить дублирование кода, у меня есть базовый абстрактный класс A, определенный в отдельной сборке, и производные классы B, C (каждый в отдельной сборке), которые отличаются только вызовом синхронных или асинхронных версий методов. Я хочу переместить всю логику в базовый класс, чтобы убрать дублирование кода. Я пробовал добавить виртуальные методы в базовый класс для синхронизируемых и асинхронных версий (

Код: Выделить всё

Evaluate
и EvaluateAsync), но это не лучший выбор, поскольку они будут общедоступны и сбивают с толку клиентов, когда им позвонить.
Мои попытки :

Код: Выделить всё

public virtual Task EvaluateAsync()
{
return Task.FromResult(null);
}

public virtual object? Evaluate()
{
return null;
}
При этом оба метода будут доступны в синхронных и асинхронных сборках. Есть ли способ решить эту проблему?

Подробнее здесь: https://stackoverflow.com/questions/787 ... thod-calls

Вернуться в «C#»