Код F#
не работает, потому что Type.DefaultBinder
не хочет связываться с общим методом Id
. Есть ли альтернатива Binder
, которая сделает это?Есть ли System.Reflection.Binder (.NET), который связывается с универсальными методами?
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#? – t0yv0