Можно даже не <State, string> а <State, Func<IEnumerator>>
Ну вот на кой черт там вообще enum, ну?
Класс вызывающий метод уже знает что он хочет вызвать - он же знает нужный енам, верно?
Ну пусть прокидывает в метод делегат с функцией, который будет на той стороне корутиной запускаться.
Я бы вообще отдельный struct создавал под интерфейсом и его прокидывал в метод, по мне так симпатичнее выглядит.