【发布时间】:2009-09-04 16:36:50
【问题描述】:
以下F# 代码失败,因为Type.DefaultBinder 不想绑定到通用Id 方法。有没有替代的Binder 可以做到这一点?
open System
open System.Reflection
type Foo() =
member this.Id<'T>(x: 'T) : 'T = x //'
typeof<Foo>.InvokeMember (
"F",
BindingFlags.InvokeMethod,
Type.DefaultBinder,
(new Foo()),
[| box "test" |]
)
这里是等效的 C#:
using System;
using System.Reflection;
public class Foo {
T Id<T>(T x) {
return x;
}
static void Main() {
typeof(Foo).InvokeMember
(
"F",
BindingFlags.InvokeMethod,
Type.DefaultBinder,
(new Foo()),
new object[] {"test"}
);
}
}
【问题讨论】:
-
你能把c#标签去掉吗
-
当然。你能解释一下为什么吗?我是 Stackoverflow 的新手,还不知道所有规则,但我认为这个问题并不是特定于语言的 - 所以如果有 F# 标签,为什么不使用 C#?
标签: .net reflection f# late-binding