Вам не нравятся операторы If / Else для проверки включенных функций или специфический опрос системы лицензий среди логики вашей основной программы?
Я не вижу, как вы можете отключить функциональность без операторов If / Else, но вы можете поддерживать ее в чистоте, если у вас есть класс License, который обо всем позаботится.
У меня будет класс лицензии, который инициализируется при запуске приложения и имеет метод public bool IsFeatureLicensed(string MethodName)
.
Каждый метод, предоставляющий функцию, которую вы хотите защитить с помощью лицензии, будет иметь что-то вроде:
If (LicenceManager.IsFeatureLicensed(Reflection.MethodBase.GetCurrentMethod.Name)) {
//Do your stuff!
} else {
//Throw exception or show error message or something.
}
Метод IsFeatureLicensed в создаваемом вами классе LicenseManager взглянет на имя метода и проверит, позволяет ли лицензия использовать функцию, предоставляемую этим методом. Он должен возвращать True во всех случаях, кроме случаев, когда лицензия запрещает использование этой функции.
Таким образом, каждый метод выполняет идентичный вызов менеджера лицензий (что делает его очень простым в обслуживании), и все, что связано с лицензированием, заключено в один класс. Это позволяет вам очень легко изменить способ лицензирования (например, вы можете просто вернуть True для всего во время разработки), и к остальной части вашего приложения не нужно прикасаться.