В F# явно указывается реализацяи для каждого интерфейса Возможно сработает следующее: сделай один интерфейс (условно IOperationIdHolder) который наследует этим трем Относледуй от него класс и сделай реализацию для этого IOperationIdHolder в классе
Если хочешь чтобы функция вызывалась и туда передавались аргументы, то атрибут нужен. Если не указать атрибут, то будет имплиситный энтрипоинт - топ левел стейтменты в последнем файле будут использованы как энтри поинт и не будет никаких алиасов к аргументам.