Было бы неплохо иметь оператор moduleof
... Поскольку его нет, самый простой способ сделать то, что вы хотите, - это, вероятно, использовать библиотеку метаданных в F # PowerPack:
#r "FSharp.PowerPack.Metadata.dll"
open Microsoft.FSharp.Metadata
// get .NET assembly by filename or other means
let asm = ...
let fasm = FSharpAssembly.FromAssembly asm
let t = fasm.GetEntity("Foo").ReflectionType
К сожалению, это не будет работать с динамическими сборками (например, сгенерированными с помощью F # Interactive). Вы можете сделать нечто подобное, используя вызовы vanilla System.Reflection
, но это больше зависит от хорошего понимания скомпилированной формы, которую принимает ваш модуль.