Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
dotNET Platform
fsharp
提交
fae4db4e
F
fsharp
项目概览
dotNET Platform
/
fsharp
12 个月 前同步成功
通知
0
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
F
fsharp
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
fae4db4e
编写于
7月 26, 2016
作者:
D
Don Syme
提交者:
GitHub
7月 26, 2016
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #9 from KevinRansom/dsyme-tuple-spike
Fix isTuple for arrays and pointers.
上级
875bdff2
b010d975
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
6 addition
and
3 deletion
+6
-3
src/fsharp/FSharp.Core/reflect.fs
src/fsharp/FSharp.Core/reflect.fs
+6
-3
未找到文件。
src/fsharp/FSharp.Core/reflect.fs
浏览文件 @
fae4db4e
...
...
@@ -78,11 +78,13 @@ module internal Impl =
//-----------------------------------------------------------------
// GENERAL UTILITIES
#
if
FX_ATLEAST_PORTABLE
let
instanceFieldFlags
=
BindingFlags
.
Instance
let
instancePropertyFlags
=
BindingFlags
.
Instance
let
staticPropertyFlags
=
BindingFlags
.
Static
let
staticFieldFlags
=
BindingFlags
.
Static
let
staticMethodFlags
=
BindingFlags
.
Static
#
else
let
instanceFieldFlags
=
BindingFlags
.
GetField
|||
BindingFlags
.
Instance
let
instancePropertyFlags
=
BindingFlags
.
GetProperty
|||
BindingFlags
.
Instance
let
staticPropertyFlags
=
BindingFlags
.
GetProperty
|||
BindingFlags
.
Static
let
staticFieldFlags
=
BindingFlags
.
GetField
|||
BindingFlags
.
Static
...
...
@@ -385,7 +387,8 @@ module internal Impl =
let
isTupleType
(
typ
:
Type
)
=
// Simple Name Match on typ
tupleNames
|>
Seq
.
exists
(
fun
n
->
typ
.
FullName
.
StartsWith
(
n
))
if
typ
.
IsEnum
||
typ
.
IsArray
||
typ
.
IsPointer
then
false
else
tupleNames
|>
Seq
.
exists
(
fun
n
->
typ
.
FullName
.
StartsWith
(
n
))
let
maxTuple
=
8
// Which field holds the nested tuple?
...
...
@@ -470,7 +473,7 @@ module internal Impl =
elif
j
=
maxTuple
then
"Rest"
else
(
assert
false
;
""
))
// dead code under prior assert, props.Length <= maxTuple
haveNames
=
expectNames
)
#
endif
#
endif
props
let
orderTupleFields
(
fields
:
FieldInfo
[]
)
=
...
...
@@ -534,7 +537,7 @@ module internal Impl =
// Get the reader for the outer tuple record
let
reader
=
if
typ
.
IsValueType
then
let
fields
=
(
typ
.
GetFields
(
instance
Property
Flags
|||
BindingFlags
.
Public
)
|>
orderTupleFields
)
let
fields
=
(
typ
.
GetFields
(
instance
Field
Flags
|||
BindingFlags
.
Public
)
|>
orderTupleFields
)
((
fun
(
obj
:
obj
)
->
fields
|>
Array
.
map
(
fun
field
->
field
.
GetValue
(
obj
))))
else
let
props
=
(
typ
.
GetProperties
(
instancePropertyFlags
|||
BindingFlags
.
Public
)
|>
orderTupleProperties
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录