Если вам нужны ТОЛЬКО точные и общеизвестные проверки работоспособности, вы можете выбрать методы расширения:
public static void SanityCheckPeriod(this int value, int min, int max)
{
//check sanity
}
В общем, элегантный способ добиться этого - это Аспектно-ориентированное программирование, в котором C # не поддерживает OOTB,PostSharp хорошо документирован (я не связан с ними), но я не знаю, удовлетворяет ли какая-либо из их лицензий вашим потребностям.
Если вы предпочитаете привнести свой собственный аспект, то вам придется принятьчто вам нужно получить доступ к вашему объекту через «интерпретатор».
Я видел пример, когда все объекты доступны через фабрику, где все возвращаемые объекты являются обертками, которые сканируют объект на предмет пользовательских атрибутов. Таким образом, именно в этом случае предпочтительным является аспектно-ориентированный код BYO, а грубый код скрыт в одном месте, а остальная часть кода остается элегантной, и это тоже решение.