open System
open System.Reflection.Emit
open System.Reflection
module Test =
let ign _ = ()
let getNowDateTime() = System.DateTime.Now
let getNumbers count = [1..count]
let getInfoAboutModule (t : Type) =
let genericToString (t : Type) =
match t.GenericTypeArguments with
| [| |] -> t.FullName
| x ->
x
|> Seq.map (fun x -> x.Name)
|> String.concat ","
let getInfo (mi:MethodInfo) =
let parameter =
let sb = System.Text.StringBuilder()
for x in mi.GetParameters() do
x.ParameterType
|> genericToString
|> sb.Append
|> ignore
sb.ToString()
|> fun str -> if str |> System.String.IsNullOrEmpty then "unit -> " else str
sprintf "%s : %s %s" mi.
Name parameter
(genericToString mi.
ReturnType)
t.GetMethods(BindingFlags.Public ||| BindingFlags.Static)
|> Seq.map getInfo
Assembly.GetCallingAssembly().GetTypes()
|> Seq.tryFind (fun t -> t.Name = "Test")
|> Option.map (getInfoAboutModule)
|> Option.iter(Seq.iter (printfn "%s"))
b3BlbiBTeXN0ZW0Kb3BlbiBTeXN0ZW0uUmVmbGVjdGlvbi5FbWl0Cm9wZW4gU3lzdGVtLlJlZmxlY3Rpb24KCm1vZHVsZSBUZXN0ID0gCiAgICBsZXQgaWduIF8gPSAoKQogICAgbGV0IGdldE5vd0RhdGVUaW1lKCkgPSBTeXN0ZW0uRGF0ZVRpbWUuTm93CiAgICBsZXQgZ2V0TnVtYmVycyBjb3VudCA9IFsxLi5jb3VudF0KCmxldCBnZXRJbmZvQWJvdXRNb2R1bGUgKHQgOiBUeXBlKSA9IAoKICAgIGxldCBnZW5lcmljVG9TdHJpbmcgKHQgOiBUeXBlKSA9IAogICAgICAgIG1hdGNoIHQuR2VuZXJpY1R5cGVBcmd1bWVudHMgd2l0aAogICAgICAgIHwgW3wgfF0gLT4gdC5GdWxsTmFtZQogICAgICAgIHwgeCAtPiAKICAgICAgICAgICAgeCAKICAgICAgICAgICAgfD4gU2VxLm1hcCAoZnVuIHggLT4geC5OYW1lKQogICAgICAgICAgICB8PiBTdHJpbmcuY29uY2F0ICIsIiAKICAgICAgICAgICAgfD4gc3ByaW50ZiAiJXM8JXM+IiB0Lk5hbWUKICAgICAgICAgICAgCiAgICBsZXQgZ2V0SW5mbyAobWk6TWV0aG9kSW5mbykgPQogICAgICAgIGxldCBwYXJhbWV0ZXIgPSAKICAgICAgICAgICAgbGV0IHNiID0gU3lzdGVtLlRleHQuU3RyaW5nQnVpbGRlcigpCgogICAgICAgICAgICBmb3IgeCBpbiBtaS5HZXRQYXJhbWV0ZXJzKCkgZG8KICAgICAgICAgICAgICAgIHguUGFyYW1ldGVyVHlwZQogICAgICAgICAgICAgICAgfD4gZ2VuZXJpY1RvU3RyaW5nCiAgICAgICAgICAgICAgICB8PiBzcHJpbnRmICIlcyA6ICVzIC0+IiB4Lk5hbWUKICAgICAgICAgICAgICAgIHw+IHNiLkFwcGVuZAogICAgICAgICAgICAgICAgfD4gaWdub3JlCgogICAgICAgICAgICBzYi5Ub1N0cmluZygpCiAgICAgICAgICAgIHw+IGZ1biBzdHIgLT4gaWYgc3RyIHw+IFN5c3RlbS5TdHJpbmcuSXNOdWxsT3JFbXB0eSB0aGVuICJ1bml0IC0+ICIgZWxzZSBzdHIKCiAgICAgICAgc3ByaW50ZiAiJXMgOiAlcyAlcyIgbWkuTmFtZSBwYXJhbWV0ZXIgKGdlbmVyaWNUb1N0cmluZyBtaS5SZXR1cm5UeXBlKSAKCiAgICB0LkdldE1ldGhvZHMoQmluZGluZ0ZsYWdzLlB1YmxpYyB8fHwgQmluZGluZ0ZsYWdzLlN0YXRpYykKICAgIHw+IFNlcS5tYXAgZ2V0SW5mbwogICAgCgpBc3NlbWJseS5HZXRDYWxsaW5nQXNzZW1ibHkoKS5HZXRUeXBlcygpCnw+IFNlcS50cnlGaW5kIChmdW4gdCAtPiB0Lk5hbWUgPSAiVGVzdCIpCnw+IE9wdGlvbi5tYXAgKGdldEluZm9BYm91dE1vZHVsZSkKfD4gT3B0aW9uLml0ZXIoU2VxLml0ZXIgKHByaW50Zm4gIiVzIikp