Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    10

    c# xml reflection

    salve, ho in mente di scrivere un'applicazione in C# con le skin intercambiabili. In realta' e' gia' fatta, ma vorrei fare un qualcosa di piu furbo. Ciò che ho pensato di fare ve lo descivo di seguito:

    HO un file xml che mi descrive i vari componenti.
    Ad esempio per il form avro' qualcosa come:

    <form1 BackgroundImage="image.bmp" TrasparencyKey="White">
    <Location x="0" y="0"></Location>
    </form>

    Quello che faccio adesso e' controllare se nel file xml e' presente una particolare proprieta' e poi, in caso, la utilizzo. Si potrebbe fare in modo migliore con l'uso della reflection, ma non avendola mai usata, ho bisogno di un po di aiuto.


    Quindi l'idea e' di identificare le proprieta' specificae nel file xml in questo modo:

    for (int i = 0; i < reader.AttributeCount; i++)
    {
    reader.MoveToAttribute(i);
    // Qui utilizzare reader.Name e reader.Value per settare le varie proprieta'

    }

    Sapete aiutarmi?? GRAZIE!!

  2. #2
    LEggi la documentazione e fatti una ricerca...non credo troverai nulla di fatto per il tuo caso, però ti spiegano in dodicimila come:

    leggere il tipo di un oggetto
    istanziare un nuovo oggetto da una stringa
    leggerne i metodi pubblici e protetti (non privati)
    leggere i parametri di un metodo

    partendo dalla classe Type, passando per la classe MethodInfo se vuoi.... insomma, leggiti prima l'msdn e poi magari fai una domanda un pochino piu precisa
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    10
    Ho provato cosi':

    for (int i = 0; i < reader.AttributeCount; i++)
    {
    reader.MoveToAttribute(i);
    Type t = this.GetType();
    PropertyInfo mi = t.GetProperty(reader.Name);
    Object[] param = new Object[1];
    param[0] = (Object)reader.Value;
    if (mi != null)
    mi.SetValue(this,param, null); <---
    }

    ma ottengo l'errore nella riga con la freccia:


    Un oggetto di tipo 'System.Object[]' non può essere convertito nel tipo 'System.Drawing.Image'.

    Il particolare caso in cui ottengo l'errore e' che reader.Name = TrasparencyKeye reader.Value=White

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.