Итак, если у вас есть интерфейс IEmployeeManagement:
public interface IEmployeeManagement {
void AddUser();
}
И тогда у вас есть ваш класс, который его реализует:
public class RealManagement : IEmployeeManagement {
public void AddUser() { do lots of stuff }
}
Вместо наличия условия if для каждого вызова AddUser,создайте другую реализацию интерфейса:
public class VoidManagement : IEmployeeManagement {
public void AddUser() { do nothing }
}
Таким образом, вам не нужно будет выполнять условия для каждого вызова метода, а вместо этого вы будете делать это только при инициализации класса.
Если вы используетекакая-то структура внедрения зависимостей, эту логику можно установить только один раз вместо каждого при создании класса.
Если настройка относится ко всему уровню приложения, для всех пользователей у вас может быть что-то подобное
Startup.cs (при условии .net core):
public void ConfigureServices(IServiceCollection services)
{
if(Configuration["isEmployeeManagement"] == "true") {
services.AddTransient<IEmployeeManagement>(RealManagement);
} else {
services.AddTransient<IEmployeeManagement>(VoidManagement);
}
}
Как точно выполнить инициализацию правильных изменений экземпляра в зависимости от того, как вы получаете это isEmployeeManagement, каков срок службы службы и чтоDI библиотека, которую вы используете, если используете что-либо.Но общая идея одна и та же - две реализации интерфейса вызывают методы там, где вам нужно, но используют некую логику для правильной инициализации экземпляра.