Sunday, 13 July 2014

Object reference not set to an instance of a new object? [duplicate]




This question already has an answer here:




I have these two classes:



public class ColHairDef
{
#region Variables

private string _DefName;
private string _GraphicPath;
private string _Label;
private HairGender _HairGender;
private List<string> _HairTags;

#endregion

#region Properties

public string DefName
{
get { return _DefName; }
set { _DefName = value; }
}

public string GraphicPath
{
get { return _GraphicPath; }
set { _GraphicPath = value; }
}

public string Label
{
get { return _Label; }
set { _Label = value; }
}

public HairGender HairGender
{
get { return _HairGender; }
set { _HairGender = value; }
}

public List<string> HairTags
{
get { return _HairTags; }
set { _HairTags = value; }
}

#endregion

#region Constructors

public ColHairDef()
{

}

#endregion
}

public class ColHairDefItem
{
#region Variables

private ColHairDef _HairDef;
private bool _Selected;

#endregion

#region Properties

public ColHairDef HairDef
{
get { return _HairDef; }
set { _HairDef = value; }
}

public bool Selected
{
get { return _Selected; }
set { _Selected = value; }
}

#endregion

#region Constructors

public ColHairDefItem()
{

}

#endregion
}


and I'm trying to run this code:



private static void VisitHairDef(XmlTextReader reader, int i)
{
ColHairDef hairDef = new ColHairDef();
ColHairDefItem hairDefItem = new ColHairDefItem();

while (reader.MoveToNextAttribute())
{
switch (reader.Name)
{
case "DefName":
hairDef.DefName = reader.Value;
Log.Message("HairDef DefName: " + hairDef.DefName);
break;

case "GraphicPath":
Log.Message("Checking GraphicPath...");
hairDef.GraphicPath = reader.Value;
Log.Message("HairDef GraphicPath: " + hairDef.GraphicPath);
break;

case "HairGender":
string hair = reader.Value;
int hairGender = 0;
if (hair == "Any")
{
hairGender = 2;
}
else if (hair == "Female")
{
hairGender = 4;
}
else if (hair == "FemaleUsually")
{
hairGender = 3;
}
else if (hair == "MaleUsually")
{
hairGender = 1;
}
hairDef.HairGender = (HairGender)hairGender;
Log.Message("HairDef HairGender: " + hairDef.HairGender.ToString());
break;

case "Label":
hairDef.Label = reader.Value;
Log.Message("HairDef Label: " + hairDef.Label);
break;

case "Selected":
bool selected = bool.Parse(reader.Value);
hairDefItem.Selected = selected;
Log.Message("HairDefItem Selected: " + hairDefItem.Selected.ToString());
hairDefItem.HairDef = hairDef;
try
{
ColonistManager.Population[i].HairDefItem = hairDefItem;
}
catch (Exception e)
{
Log.Message(e.Message);
}
Log.Message("HairDefItem HairDef inserted.");
break;
}
}
}


to import information from this xml file:



<?xml version="1.0" encoding="utf-8"?>
<Colonists>
<ColonistAmount amount="3" />
<Colonist num="1">
<BasicInfo Name="Argain Don Bentham" />
<BasicInfo Age="29" />
<BasicInfo Gender="1" />
<BasicInfo Trait1="Nosy" />
<BasicInfo Trait2="Careful" />
<Graphics BodyType="Thin" />
<Graphics SkinColor="1,0.9372549,0.7411765,1" />
<Graphics CrownType="Average" />
<Graphics HeadGraphicPath="Things/Pawn/Humanoid/Heads/Male/Male_Average_Normal" />
<Graphics HairColor="1,1,1,1" />
<HairDef DefName="Mop" />
<HairDef GraphicPath="Things/Pawn/Humanoid/Hairs/Mop" />
<HairDef HairGender="MaleUsually" />
<HairDef Label="Mop" />
<HairDef Selected="True" />
<HairTags Tag0="Urban" />
<HairTags Tag1="Rural" />
<Apparel>
<OnSkin Layer="OnSkin" Label="Button-down shirt" GraphicPath="Things/Pawn/Humanoid/Apparel/ShirtButton/ShirtButton" Color="1,1,1,1" />
<Shell Layer="Shell" Label="Duster" GraphicPath="Things/Pawn/Humanoid/Apparel/Duster/Duster" Color="0,0,0,1" />
</Apparel>
<Backstories>
<Childhood Index="22" />
<Adulthood Index="183" />
</Backstories>
<SkillPool Amount="2" />
<Skills Name="Construction" Value="8" Passion="0" />
<Skills Name="Growing" Value="8" Passion="0" />
<Skills Name="Research" Value="6" Passion="0" />
<Skills Name="Mining" Value="7" Passion="0" />
<Skills Name="Shooting" Value="4" Passion="1" />
<Skills Name="Melee" Value="5" Passion="2" />
<Skills Name="Social" Value="0" Passion="3" />
<Skills Name="Cooking" Value="0" Passion="0" />
<Skills Name="Medicine" Value="0" Passion="0" />
<Skills Name="Artistic" Value="0" Passion="0" />
<Skills Name="Crafting" Value="0" Passion="0" />
<End />
</Colonist>
<Colonist num="2">
<BasicInfo Name="Hotaru Princess Martinez" />
<BasicInfo Age="34" />
<BasicInfo Gender="2" />
<BasicInfo Trait1="Cat lover" />
<BasicInfo Trait2="Proud" />
<Graphics BodyType="Male" />
<Graphics SkinColor="1,0.9372549,0.8352941,1" />
<Graphics CrownType="Average" />
<Graphics HeadGraphicPath="Things/Pawn/Humanoid/Heads/Female/Female_Average_Pointy" />
<Graphics HairColor="0.5176471,0.3254902,0.1843137,1" />
<HairDef DefName="Pigtails" />
<HairDef GraphicPath="Things/Pawn/Humanoid/Hairs/Pigtails" />
<HairDef HairGender="Female" />
<HairDef Label="Pigtails" />
<HairDef Selected="True" />
<HairTags Tag0="Urban" />
<Apparel>
<OnSkin Layer="OnSkin" Label="Button-down shirt" GraphicPath="Things/Pawn/Humanoid/Apparel/ShirtButton/ShirtButton" Color="0,1,0,1" />
<Shell Layer="Shell" Label="Duster" GraphicPath="Things/Pawn/Humanoid/Apparel/Duster/Duster" Color="0,1,0,1" />
</Apparel>
<Backstories>
<Childhood Index="44" />
<Adulthood Index="125" />
</Backstories>
<SkillPool Amount="40" />
<Skills Name="Construction" Value="0" Passion="1" />
<Skills Name="Growing" Value="0" Passion="2" />
<Skills Name="Research" Value="0" Passion="3" />
<Skills Name="Mining" Value="0" Passion="0" />
<Skills Name="Shooting" Value="0" Passion="0" />
<Skills Name="Melee" Value="0" Passion="0" />
<Skills Name="Social" Value="0" Passion="0" />
<Skills Name="Cooking" Value="0" Passion="0" />
<Skills Name="Medicine" Value="0" Passion="0" />
<Skills Name="Artistic" Value="0" Passion="0" />
<Skills Name="Crafting" Value="0" Passion="0" />
<End />
</Colonist>
<Colonist num="3">
<BasicInfo Name="Timur Chimp Ibarra" />
<BasicInfo Age="23" />
<BasicInfo Gender="2" />
<BasicInfo Trait1="Weak" />
<BasicInfo Trait2="Indecisive" />
<Graphics BodyType="Male" />
<Graphics SkinColor="1,0.9372549,0.8352941,1" />
<Graphics CrownType="Average" />
<Graphics HeadGraphicPath="Things/Pawn/Humanoid/Heads/Male/Male_Average_Wide" />
<Graphics HairColor="0.25,0.2,0.15,1" />
<HairDef DefName="Afro" />
<HairDef GraphicPath="Things/Pawn/Humanoid/Hairs/Afro" />
<HairDef HairGender="Any" />
<HairDef Label="Afro" />
<HairDef Selected="True" />
<HairTags Tag0="Urban" />
<Apparel>
<OnSkin Layer="OnSkin" Label="Button-down shirt" GraphicPath="Things/Pawn/Humanoid/Apparel/ShirtButton/ShirtButton" Color="0,0,1,1" />
<Shell Layer="Shell" Label="Duster" GraphicPath="Things/Pawn/Humanoid/Apparel/Duster/Duster" Color="0,0,1,1" />
</Apparel>
<Backstories>
<Childhood Index="51" />
<Adulthood Index="213" />
</Backstories>
<SkillPool Amount="40" />
<Skills Name="Construction" Value="0" Passion="1" />
<Skills Name="Growing" Value="0" Passion="2" />
<Skills Name="Research" Value="0" Passion="3" />
<Skills Name="Mining" Value="0" Passion="0" />
<Skills Name="Shooting" Value="0" Passion="0" />
<Skills Name="Melee" Value="0" Passion="0" />
<Skills Name="Social" Value="0" Passion="0" />
<Skills Name="Cooking" Value="0" Passion="0" />
<Skills Name="Medicine" Value="0" Passion="0" />
<Skills Name="Artistic" Value="0" Passion="0" />
<Skills Name="Crafting" Value="0" Passion="0" />
<End />
</Colonist>
</Colonists>


The ColonistManager.Population[i].HairDefItem is not accepting the new hairDefItem object for some reason. I can't quite see what I'm missing here... is the order of the variable initializations incorrect? I would greatly appreciate some assistance with this.


No comments:

Post a Comment