Я могу только догадываться, почему они поддерживают только свойства: возможно, потому что это универсальное соглашение в платформе .NET никогда не выставлять изменчивые поля (, вероятно, для защиты бинарной совместимости ), и они каким-то образом ожидал, что все программисты будут следовать одному и тому же соглашению.
Кроме того, хотя поля и свойства доступны с одним и тем же синтаксисом, привязка данных использует отражение, и (так что я слышал) отражение должно использоваться по-разному для полей доступа чем для доступа к свойствам.
Вы можете использовать собственную команду «выполнить» Lua.
Пример:
os.execute ("c: \\ temp \\ program.exe") [ ! d1]
Источники: Руководство Lua / os.execute
Если вам нужен выход программы, используйте io.popen