An object reference is required for the nonstatic field, method,
Jeg har følgende kode i C#, som jeg får fejlen:An object reference is required for the nonstatic field, method, 'InfoControl.deserializeObj()'
når jeg forsøger at kompilere det!
Jeg bruger et Singleton pattern for at sikre at der kun dannes ét objekt af typen InfoControl. I metodekaldet getInstance vil jeg, hvis objektet ikke er instantieret hente det fra en fil!
Det er ved metode kaldet deserializeObj() at jeg får fejlen!
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Soap;
[Serializable()]
public class InfoControl
{
private static InfoControl instance;
private Information[] info;
public static InfoControl getInstance()
{
if (instance == null)
{
try
{
// try to deserialize the 'instance' object
deserializeObj(); // ****** HER KOMMER FEJLEN ******
}
catch(Exception e)
{
// if the deserialization fails
Console.WriteLine("Der er oprettet et nyt objekt: " + e);
instance = new InfoControl();
}
}
return instance;
}
private InfoControl()
{
info = new Information[10];
for(int i = 0; i < 10; i++)
{
info[i] = new Information(i);
}
}
public string getOverskrift(int side)
{
return info[side].getOverskrift();
}
public string getBeskrivelse(int side)
{
return info[side].getBeskrivelse();
}
public void setOverskrift(int side, string tekst)
{
info[side].setOverskrift(tekst);
}
public void setBeskrivelse(int side, string tekst)
{
info[side].setBeskrivelse(tekst);
}
private void serializeObj()
{
//Opens a file and serializes the object into it in xml format.
Stream stream = File.Open("Information.xml", FileMode.Create);
SoapFormatter formatter = new SoapFormatter();
formatter.Serialize(stream, instance);
stream.Close();
}
private void deserializeObj()
{
//Empties reference.
instance = null;
//Opens file "information.xml" and deserializes the object from it.
Stream stream = File.Open("information.xml", FileMode.Open);
SoapFormatter formatter = new SoapFormatter();
instance = (InfoControl)formatter.Deserialize(stream);
stream.Close();
}
}
// A test object that needs to be serialized.
[Serializable()]
public class Information
{
public int side;
public string overskrift;
public string beskrivelse;
public Information(int s)
{
side = s;
}
public void setOverskrift(string info)
{
overskrift = info;
}
public string getOverskrift()
{
return overskrift;
}
public void setBeskrivelse(string info)
{
beskrivelse = info;
}
public string getBeskrivelse()
{
return beskrivelse;
}
}
