Le code F#
suivant échoue car Type.DefaultBinder
ne souhaite pas se lier à la méthode Id
générique. Y at-il une alternative Binder
qui ferait cela?Existe-t-il un System.Reflection.Binder (.NET) qui se lie aux méthodes génériques?
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" |]
)
est ici équivalent 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"}
);
}
}
pouvez-vous s'il vous plaît enlever le C# tag –
sûr. Pouvez-vous s'il vous plaît expliquer pourquoi? Je suis nouveau sur Stackoverflow et je ne connais pas encore toutes les règles, mais je pense que la question n'est pas vraiment spécifique à la langue - donc si la balise F # est là, pourquoi pas aussi C#? – t0yv0