我从F#程序集中获取了一堆对象,然后我将其反思以发现它们的价值。
(确切地说,我有一个使用fsYacc的解析器。然后我尝试在TreeView中显示解析的结果。)
返回的一个可能的对象是这个Discriminated union:
type op = Eq | Gt | Ge | Lt | Le
此类型的对象将具有值,例如Ge
。
有没有办法使用反射我可以确定一个对象是一个被辨别的联合,因此采取措施来确定它的值?
答案 0 :(得分:5)
确定它是否是一个不同的联盟 - http://msdn.microsoft.com/en-us/library/ee353623.aspx - FSharpType.IsUnion
要使用Reflection.UnionCaseInfo
- http://msdn.microsoft.com/en-us/library/ee370473.aspx