Visualizzazione dei risultati da 1 a 10 su 19

Visualizzazione discussione

  1. #4
    Quote Originariamente inviata da djciko Visualizza il messaggio
    potresti indicare soltanto il punto dove non funziona ?
    Certo, il punto che non funziona è questo:

    codice:
    ListInsertAdempResponse.Campi[0].TestNomeCampo = "S_CAMPO1";
    Nello specifico succede che il puntatore si perde dopo "Campi" -> ListInsertAdempResponse.Campi
    e mi da l'errore:

    codice:
    System.NullReferenceException: 'Riferimento a un oggetto non impostato su un'istanza di oggetto.'
    
    
    WcfDemo.InsertAdempList.Campi.get ha restituito null.
    Ho visto che hai fatto una cosa bellissima aggiungendo il .add dopo Campi e volevo fare così anche io, ma purtroppo Visual Studio non me consente, dicendomi:
    codice:
    InsertAdempFields[]' non contiene una definizione di 'Add' e non è stato trovato alcun metodo di estensione 'Add' che accetta un primo argomento di tipo 'InsertAdempFields[]'. Probabilmente manca una direttiva using o un riferimento all'assembly.
    Se aggiungo il codice di costruzione come il tuo, in fondo alla pagina, il .add mi viene consentito, però la variabile "ListInsertAdempResponse" perde la compatibilità di tipo quando vado a richiamare il metodo:

    codice:
    ResponseInsertAdempFields = test.ResponseInsertAdempFields(Token, ListInsertAdempResponse);
    mi da l'errore:
    codice:
    Argomento 2: non è possibile convertire da 'testservice.InsertAdempList' a 'WcfDemo.InsertAdempList'    
    
    La corrispondenza migliore del metodo di overload per 'WcfDemo.Service1Client.ResponseInsertAdempFields(string, WcfDemo.InsertAdempList)' presenta alcuni argomenti non validi

    Quote Originariamente inviata da djciko Visualizza il messaggio
    intanto ho provato con una classe ed una paginetta in cui c'e' una label "lb", che viene correttamente valorizzata con "nome - mario // cognome - rossi", vedi se trovi qualche spunto (non ho capito perche' le proprieta' sono static) :
    Ho tolto lo static, effettivamente non serviva...


    Quote Originariamente inviata da djciko Visualizza il messaggio
    e vedo correttamente valorizzata la label con i nomi dei campi ed i loro valori..

    Ora, venendo alla definizione nel WebService, un get ed un set bastano, l'importante e' la decorazione e la corretta definizione della classe che riguarda la proprieta'...

    Dovresti postare la parte del WS con la definizione precisa (vedo le classi duplicate nella pagina, non ho capito neanche questo punto)
    Probabilmente hai ragione, è un problema di "decorazione" delle proprietà che non riesco a capire...

    La definizione precisa che si trova nel riferimento web è questa:

    codice:
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Data.SqlClient;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.ServiceModel.Web;
    using System.Text;
    using ComunicaCrypto;
    
    
    namespace WcfDemo
    {
        [ServiceContract]
        public interface IService1
        {
            [OperationContract]
            ResponseInsertAdempList ResponseInsertAdempFields(string Token, InsertAdempList ListAdempResponse);
        }
    
    [DataContract]
    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; }
            }
        }
    }
    Nel file di configurazione del WebService (che si è creato in automatico dopo aver aggiunto il web reference) invece ho

    La funzione che richiamo:
    codice:
    public ResponseInsertAdempList ResponseInsertAdempFields(string Token, InsertAdempList ListAdempResponse);
    e le proprietà della "InsertAdempList":
    codice:
    namespace WcfDemo
    {
        [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);
        }
    }
    Per le classi duplicate non ho capito bene, forse intendi tutte quelle istanze che avevo creato e poi commentato?
    C'era un po' di confusione in effetti... adesso riposto la pagina del codice con solo le informazioni strettamente necessarie

    Grazie mille per il tuo aiuto!
    Raimondo
    Ultima modifica di RayanHawkins; 17-04-2018 a 15:21

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.