如果我在.fsx脚本中定义了一个名为MyModule
的模块,并从另一个.fsx脚本中引用;是否有可能在运行时确定模块是否定义了变量foo
?
我正在尝试实现这样的事情:
let fooWithDefault =
let cfgType:Type = typedefof<MyModule>
let propOpt =
cfgType.GetProperties()
|> Seq.tryFind( fun p -> p.Name = "foo")
match propOpt with
| Some foo -> foo.GetValue(null).ToString()
| None -> "My Default Value for f"
上述尝试失败并显示错误:
类型&#39; MyModule&#39;未定义
答案 0 :(得分:1)
一种可能的(有点kludgy)方法是枚举执行程序集中的所有类型:
<iframe src="http://linktopage.com" style="width:100%;" frameborder="0">
</iframe>
如果我们有两个名为&#39; MyModule&#39;的实体,如果使用这种方法,我们需要注意存在名称冲突的风险。此外,枚举执行程序集中的所有类型肯定是次优的。
据说这对我试过的有限测试用例似乎没问题