IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Silverlight Discussion :

Activator et expression lambda [MVVM]


Sujet :

Silverlight

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 255
    Points : 445
    Points
    445
    Par défaut Activator et expression lambda
    Bonjour,

    Je charge en asynchrone une dll restée côté serveur à l'aide d'un WebClient.Comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var dnl = new WebClient();
                dnl.OpenReadCompleted += dnl_OpenReadCompleted;
                dnl.OpenReadAsync(new Uri("http://monAdresse/madll.dll"), UriKind.Absolute);
     
    void  dnl_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
            {
                try
                {
                    AssemblyPart assemblyPart = new AssemblyPart();//ok
                    extLib = assemblyPart.Load(e.Result);//ok
                    Type t = extLib.GetType("monNameSpace.maClasse", true);//ok
                    object obj = Activator.CreateInstance(t);//ligne d'erreur
                    ...
    Avec toutes les dll ça se passe bien mais dernièrement je n'ai pas réussi à charger une dll car il y avait des lignes de code comportant des expressions lambda (que j'utilise pour remplacer les macros du C) du style:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Func<int, int> rank = (x) => (((x- 26) / 12) + 1);
    Func<int> Gettime = () => Environment.TickCount & Int32.MaxValue;
    Func<bool,int> Int = (x) => Convert.ToInt32(x);
    Sans ces lignes c'est ok, mais avec je déclenche une TargetInvocationException,peu importe la syntaxe.
    Bien sûr je peux passer par des fonctions classiques mais j'aimerai savoir si les expressions lambda sont incompatibles avec Silverlight ou si j'oublie quelque chose.
    Merci.

    Salutations.

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Activator.CreateIntance se sert du constructeur sans paramètres public pour instancier un objet. Peut être que celui ci n'existe pas.

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 255
    Points : 445
    Points
    445
    Par défaut
    Bonjour Nathanael,

    J'utilise un constructeur public sans paramêtres. Là où tu as raison c'est que
    l'erreur doit venir d'ailleurs car en utilisant des fonctions j'ai aussi la même erreur, par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int Int(bool x) { return Convert.ToInt32(x); }
    Donc c'est au niveau d'Activator.
    Je me suis avancé avec les lambda car j'ai fait un test en ne laissant qu'une expression lambda dans le code (sans aucun autre code) et ça roulait uniquement si je désactivais la ligne.

    Salutations.

  4. #4
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 255
    Points : 445
    Points
    445
    Par défaut
    Activator ne génère pas d'erreur si j'utilise une fonction classique (return...)dans
    un projet vide n'ayant pas d'autres données, donc les lambda posent quand même un problème avec Activator. Je dois avoir d'autres problèmes en sus des lambda avec mon code.

    Salutations.

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    255
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2002
    Messages : 255
    Points : 445
    Points
    445
    Par défaut
    Bonjour,

    C'est une grossière erreur de ma part, j'ai utilisé une dll créée en C# alors qu'il fallait une dll Silverlight, il y a incompatibilité des dépendances(system.core notamment). Donc tout passe normalement même les lambda. Désolé pour le dérangement.

    Salutations.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/03/2011, 14h50
  2. Réponses: 2
    Dernier message: 09/08/2010, 15h41
  3. expression lambda evaluee qu'une seule fois
    Par vandamme dans le forum Boost
    Réponses: 10
    Dernier message: 17/12/2009, 14h49
  4. Décortiquer une expression lambda
    Par anthyme dans le forum Framework .NET
    Réponses: 4
    Dernier message: 17/12/2009, 12h57
  5. Réponses: 0
    Dernier message: 22/12/2008, 16h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo