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

ASP.NET Discussion :

GetProperty pour obtenir une collection à partir d'un COM


Sujet :

ASP.NET

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 111
    Points : 50
    Points
    50
    Par défaut GetProperty pour obtenir une collection à partir d'un COM
    Bonjour à tous,

    J'ai un problème avec un GetProperty pour obtenir avec une collection à partir d'un objet COM.

    Voici le code VBA que je dois migrer en C# :

    (Ce code permet de supprimer une molécule du visualisateur 3D de molécules)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    	lig = molname + "_lig"	
    	For Each mol In mdl.Molecules
    	    If mol.name = molname Then
             	       Call mol.delete
     	    End If
     
    	Next
     
        For Each mol In mdl.Molecules
     
            If mol.name = lig Then
             	   Call mol.delete
    		End If
    	next
     
    	Call mdl.Views(1).UpdateChanges
    J'ai essayé avec ce code C# :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
                //Init the global values for the B3D display
                Lithium.Application App = new Lithium.Application();
                App.Visible = true;
                TRIPOS_WEB_SCRIPTING_Lib.DynamicEventSink snk = new TRIPOS_WEB_SCRIPTING_Lib.DynamicEventSink();
     
                object mdl = App.ActiveModel;
                Type t = mdl.GetType(); 
     
                PropertyInfo prop = t.GetProperty("Molecules");
     
                foreach (object molTmp in prop)
                {
     
                }
    mais il me plante sur :
    foreach (object molTmp in prop)
    avec l'erreur :
    CS1579: l'instruction foreach ne peut pas fonctionner sur des variables de type 'System.Reflection.PropertyInfo', car 'System.Reflection.PropertyInfo' ne contient pas de définition public pour 'GetEnumerator'


    Voici un code qui marche bien avec les même objets COM : cela affiche une molécule dans le visualisateur 3D de molécules.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     int index = Convert.ToInt32(e.CommandArgument);
    GridViewRow row = GridView2.Rows[index];
     
    string strCurrentPdb = Server.HtmlDecode(row.Cells[2].Text);
     
    //Init the global values for the B3D display
    Lithium.Application App = new Lithium.Application();
    App.Visible = true;
    TRIPOS_WEB_SCRIPTING_Lib.DynamicEventSink snk = new TRIPOS_WEB_SCRIPTING_Lib.DynamicEventSink();
     
    object mdl = App.ActiveModel;
     
    Type t = mdl.GetType(); MethodInfo method = t.GetMethod("ImportFile");
     
    if (method != null)
    {
    method.Invoke(mdl, new object[] { strCurrentPdb, 0 });
    }
    Merci beaucoup pour vos réponses.

    Laurent.

  2. #2
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    GetProperty() permet d'obtenir des informations sur ta propriété, mais pas ses valeurs.
    Si tu veux énumérer des molécules, pourquoi ne peux-tu pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Model mdl = App.ActiveModel;
    foreach (Molecule molecule in Model.Molecules)
    {
       ....
    }
    (j'ai supposé les noms de type Model et Molecule)

  3. #3
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    BcmDev : Merci pour ta réponse.

    Tu as raison : c'est bien un objet Model qui est retourné mais par contre impossible de faire reconnaître l'objet Model dans le code C#.

    J'ai ajouté toutes les réferences dans le projet C#, qui concernent l'objet Tripos (Visualisateur de molécules) que j'ai trouvées sur mon disque dur, j'ai ajouté les 4 références que j'ai dans mon projet VBA.

    Rien n'y fait : je n'arrive pas à avoir l'objet Model dans mon projet.

    Il y a-t'il une autre déclaration à faire ailleurs ?

    Laurent.

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    Visiblement, tu as correctement accès à l'objet Lithium.Application. En utilisant l'explorateur d'objet sur Lithium.Application, ne vois-tu aucun type particulier pour la propriété ActiveModel ? ActiveModel est-il de type Object ?

  5. #5
    Membre du Club
    Inscrit en
    Juillet 2005
    Messages
    111
    Détails du profil
    Informations forums :
    Inscription : Juillet 2005
    Messages : 111
    Points : 50
    Points
    50
    Par défaut
    BcmDev :

    Merci !! : je cherchais Model alors qu'il fallait chercher Lithium.Model, comme tu m'as indiqué !

    Je pense que cela va aller maintenant.

    Encore merci pour ta solution !!

    Laurent.

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

Discussions similaires

  1. Outils ou Classe pour obtenir un WSDL à partir d'une classe PHP
    Par denisdlu dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 21/07/2014, 12h17
  2. Réponses: 0
    Dernier message: 09/03/2012, 18h38
  3. Obtenir une chaîne à partir d'une énumération
    Par zidenne dans le forum Langage
    Réponses: 1
    Dernier message: 12/11/2005, 10h39
  4. Réponses: 1
    Dernier message: 14/10/2005, 09h55
  5. [Regexp] Obtenir une regexp à partir du texte ?
    Par Alec6 dans le forum Langage
    Réponses: 1
    Dernier message: 12/09/2005, 16h40

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