C #: fa Serializable) attributo (evitare la trasmissione un'istanza di classe ad un'altra forma?

StackOverflow https://stackoverflow.com/questions/3779057

  •  04-10-2019
  •  | 
  •  

Domanda

C #:? Il Serializable () attributo evitare la trasmissione un'istanza di classe ad un'altra forma

Ho le seguenti classi, e sta cercando di costruire il modulo A impostazioni per la mia applicazione. Ma quando provo a _configurator l'accesso in modalità settingForm io ottenere un'eccezione: "riferimento oggetto non impostato a un'istanza di un oggetto". Perché?

[Serializable()]
public class Config
{
    public Config() { }
    public string ComPort
    {
        get
        {
            return comPort;
        }
        set
        {
            comPort = value;
        }
    }

    private string comPort;

}

public partial class kineticMoldDockUserControl : UserControl
{

    private settingsForm setForm = null; 

    private Config _cf = null;



    public kineticMoldDockUserControl()
    {
        InitializeComponent();

        _cf = new Config();
        _cf.ComPort = "COM12";

    }




    private void preferencesToolStripMenuItem_Click(object sender, EventArgs e)
    {



        if (!Application.OpenForms.OfType<settingsForm>().Any())
        {

            setForm = new settingsForm();

            setForm.Show();

            setForm.cf = _cf;


        }



    }


}

public partial class settingsForm : Form
{

    Config _configutor = null;
    public Config cf { get { return _configutor; } set { _configutor = value; } }


    public settingsForm()
    {
        InitializeComponent();

        try
        {
            MessageBox.Show(_configutor.ComPort.GetType().ToString());
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

     }

}
È stato utile?

Soluzione

È errore non ha alcuna relazione con l'attributo Serializable. bugie problema in seguito righe di codice:

            setForm = new settingsForm();

            setForm.Show();

            setForm.cf = _cf;

costruttore SettingsForm sta usando il configuratore, ma si sta impostando dopo costruttore viene chiamato. Si può passare il configuratore via costruttore per risolvere il problema.

Altri suggerimenti

Il codice che hai incollato non funziona perché si accede _configurator nel costruttore di settingsForm.

Si dovrebbe invece creare un costruttore che accetta un esempio di configurazione.

L'attributo serializzazione non è la causa del vostro errore.

Si sta cercando di visualizzare le informazioni sulla configutor nel costruttore, quando la variabile CF non viene impostato fino a dopo si mostra la forma.

ho intenzione di andare su un arto e dire che è tutto perché non hai mai istanzia la classe. Solo il codice che vedo è:

Config _configutor = null;;

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top