J'ai un morceau de code où je dois savoir si un type donné implémente IEnumerable<T>
(je ne me soucie pas du T)F # équivalent du C# typeof (IEnumerable <>)
J'ai essayé (t:System.Type
dans le cas où vous vous demandez)
let interfaces = t.GetInterfaces()
let enumerbale =
interfaces.Any(fun t ->
t.GetGenericTypeDefinition() = typeof<IEnumerable<>>
)
cependant que ne compilera pas (la compilation n'aime pas le <>). J'ai alors essayé
let interfaces = t.GetInterfaces()
let enumerbale =
interfaces.Any(fun t ->
t.GetGenericTypeDefinition() = typeof<IEnumerable<'a>>
)
mais obtiens un avertissement que 'a est une contrainte à obj. Je ne veux pas comprendre si IEnumerable<obj>
est implémenté mais IEnumerabl<>
.
Tout le monde connaît la solution et btw n'hésitez pas à commenter le code ci-dessus.
http://stackoverflow.com/questions/1652050/generic-type-definition- syntaxe-sur-f –