2010-11-25 5 views
2

J'ai une propriété déclarée comme type dynamiquemot clé dynamique C# 4.0

public dynamic Data {get;set;} 

plus tard dans une méthode du type de données devient System.Collections.Generic.List donc si l'utilisation Data.AsQueryable() je reçois "System.Collections.Generic.List <Entity1 ne contient pas de définition pour 'AsQueryable'" erreur.

Le résultat doit être converti en Iqueryble et je suis en utilisant les méthodes définies dans Dynamic.Linq.

Comment dois-je procéder?

+2

Quelle est la question? – mpen

+0

quelle est la question? –

+0

Ok. C'est bon d'entendre que ça fonctionne pour vous. –

Répondre

6

Actuellement, dynamic ne fonctionne pas bien avec les méthodes d'extension.

7.6.5.2 invocations de méthode d'extension

... si le traitement normal de l'invocation ne trouve pas applicable méthodes, une tentative est faite pour traiter la construction comme une méthode d'extension appel. Si expr ou l'un des args a le type de compilation dynamique, méthodes d'extension ne seront pas applicables

Comme il est mentionné dans this question, le contexte statique (using applicables directives) devraient être mis à disposition à run-time pour chaque appel dynamique afin de déterminer quelles méthodes d'extension peuvent s'appliquer, ce qui n'est pas actuellement implémenté.

Avez-vous essayé d'appeler la méthode d'extension comme une méthode statique 'normale' à la place? Par exemple. (veuillez modifier si vous avez l'intention d'appeler une autre méthode): System.Linq.Queryable.AsQueryable(Data)

+0

génial, merci beaucoup, ce site est vraiment une excellente ressource pour les débutants – Novice

+0

@Daniel Joseph: Cheers. Peut-être que dans une future version de la langue, votre code actuel "fonctionnera". – Ani

Questions connexes