Visualizzazione dei risultati da 1 a 10 su 19

Hybrid View

  1. #1
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    C'e' molta confusione e molto codice in piu' su una cosa abbastanza semplice...

    Innanzitutto, il cast non è possibile convertire da 'testservice.InsertAdempList' a 'WcfDemo.InsertAdempList'
    ti da' questo errore perche' le due classi sono sotto due Namespace diversi (un namespace e' WcfDemo, l'altro è testservice).

    Fidati di me, parti d'accapo con la paginetta, (cancella anche il reference al WS e rifallo) dando dei nomi --piu' facili-- alle variabili, senno' non ne esci....mi sa che ti stai incartando perche' stai scambiando una classe con un'altra, a causa della confusione del codice...

    --------------------------------------
    ci hai fatto caso che queste due (la prima non ho capito neanche cosa e')

    public class InsertAdempList : IExtensibleDataObject, INotifyPropertyChanged


    ha lo stesso nome di


    public class InsertAdempList

    {
    List<InsertAdempFields> campi = new List<InsertAdempFields>();


    ?

    ... probabilmente è per questo che si confonde







  2. #2
    Quote Originariamente inviata da djciko Visualizza il messaggio
    C'e' molta confusione e molto codice in piu' su una cosa abbastanza semplice...

    Innanzitutto, il cast non è possibile convertire da 'testservice.InsertAdempList' a 'WcfDemo.InsertAdempList'
    ti da' questo errore perche' le due classi sono sotto due Namespace diversi (un namespace e' WcfDemo, l'altro è testservice).

    Fidati di me, parti d'accapo con la paginetta, (cancella anche il reference al WS e rifallo) dando dei nomi --piu' facili-- alle variabili, senno' non ne esci....mi sa che ti stai incartando perche' stai scambiando una classe con un'altra, a causa della confusione del codice...
    Si hai ragione... sarebbe bello poter andare in una parte di codice col name space "WcfDemo", aggiungergli il costruttore e -fregare- Visual studio.
    Comunque le stringhe in input le prende, anche se hanno namespace diverso... quindi il problema deve essere che gli oggetti 'testservice.InsertAdempList' e 'WcfDemo.InsertAdempList' sono proprio diversi.. e forse ho capito il perchè.

    Nel progetto "back-end" il codice:
    codice:
    public class ResponseInsertAdempList
        {
            bool Ok = true;
            string MessageResult = "";
    
    
            [DataMember]
            public bool TestOk
            {
                get { return Ok; }
                set { Ok = value; }
            }
    
    
            [DataMember]
            public string TestMessageResult
            {
                get { return MessageResult; }
                set { MessageResult = value; }
            }
        }
    
    
        public class InsertAdempFields
        {
            string NomeCampo = "";
            string ValoreCampo = "";
    
    
    
    
            [DataMember]
            public string TestNomeCampo
            {
                get { return NomeCampo; }
                set { NomeCampo = value; }
            }
    
    
            [DataMember]
            public string TestValoreCampo
            {
                get { return ValoreCampo; }
                set { ValoreCampo = value; }
            }
        }
    
    
        public class InsertAdempList
        {
            List<InsertAdempFields> campi = new List<InsertAdempFields>();
    
    
    
    
            [DataMember]
            public List<InsertAdempFields> Campi
            {
                get { return campi; }
                set { campi = value; }
            }
        }
    Viene costruita una variabile di tipo "InsertAdempList.Campi[i].NomeCampo"

    Mentre nel codice del WebService, dopo aver aggiunto i riferimenti, Visualstudio mi cambia di sua iniziativa il costrutto, che diventa:
    codice:
        [DataContract(Name = "InsertAdempList", Namespace = "http://schemas.datacontract.org/2004/07/WcfDemo")]
        [DebuggerStepThrough]
        [GeneratedCode("System.Runtime.Serialization", "4.0.0.0")]
        public class InsertAdempList : IExtensibleDataObject, INotifyPropertyChanged
        {
            public InsertAdempList();
    
    
            public ExtensionDataObject ExtensionData { get; set; }
            [DataMember]
            public InsertAdempFields[] Campi { get; set; }
    
    
            public event PropertyChangedEventHandler PropertyChanged;
    
    
            protected void RaisePropertyChanged(string propertyName);
        }
    In particolare noto la riga
    codice:
    "public InsertAdempFields[] Campi { get; set; }"
    che mi sta dicendo che il "Campi" non è più una lista come prima
    codice:
    public List<InsertAdempFields> Campi        {
                get { return campi; }
                set { campi = value; }
            }
    ma è solo un semplice vettore e quindi si aspetta una variabile di tipo "InsertAdempList.Campi[i]"
    che infatti è proprio il punto dove si perde il puntatore nell'errore

    codice:
    System.NullReferenceException: 'Riferimento a un oggetto non impostato su un'istanza di oggetto.'
    
    
    WcfDemo.InsertAdempList.Campi.get ha restituito null.
    --------------------------------------
    Quote Originariamente inviata da djciko Visualizza il messaggio
    ci hai fatto caso che queste due (la prima non ho capito neanche cosa e')

    public class InsertAdempList : IExtensibleDataObject, INotifyPropertyChanged


    ha lo stesso nome di


    public class InsertAdempList

    {
    List<InsertAdempFields> campi = new List<InsertAdempFields>();


    ?

    ... probabilmente è per questo che si confonde
    La prima è nel codice che si è creato in automatico quando ho aggiunto le Web Reference al "Progetto WebService"

    La seconda invece è nel codice che ho costruito nel "Progetto Back-End"

    Sono due progetti differenti.

    --------------------------------------

    Comunque sia ti ringrazio infinitamente per la disponibilità e l'aiuto, ho sicuramente capito meglio il problema che c'è dietro, anche se non ho ancora la soluzione.

    A mali estremi potrei andare a modificare il costrutto nel "Progetto Back-End" così da avere una variabile più semplice in input e che non mi venga sminchiata da VisualStudio.
    Vi farò sapere

    Cordialmente,
    Raimondo
    Ultima modifica di RayanHawkins; 18-04-2018 a 10:58

  3. #3
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    ah ok. e' la classe Proxy generata dalla scoperta del WS. Ti consiglio di non toccarla, ignorala

  4. #4
    Quote Originariamente inviata da djciko Visualizza il messaggio
    ah ok. e' la classe Proxy generata dalla scoperta del WS. Ti consiglio di non toccarla, ignorala
    Eh ma è proprio lì il problema, solo che la pagina viene da metadati e ha il lucchetto e non si può modificare.

    Se almeno potessi modificarla potrei cancellare la costruzione del vettore e mettere la lista per risolvere il problema, penso @_@

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 © 2026 vBulletin Solutions, Inc. All rights reserved.