Static class Awake() - c#

Hi,

I have the following class:

public class TileType : MonoBehaviour
{   
    private static List<TileInfo> TileInfoList = new List<TileInfo>
    {
        new TileInfo(0, "Blank",        new GUIContent("Blank"),    "Tiles/_BlankTile/BlankTile"),
        //More new TileInfo's are made here
    };

    // The GUIContent list will be filled in automaticly based on the TileInfoList
    public static GUIContent[] GUIContentList;

    //Fill in some information automaticly !
    void Awake ()
    {
        //Create GUIContent list
        GUIContentList = new GUIContent[TileInfoList.Count];
        for(int i = 0; i < TileInfoList.Count; ++i)
        {
            GUIContentList _= TileInfoList*.GuiContent;*_
 _*}*_
 _*}*_
_*//Some more irrelevant get methods*_
_*```*_
_*<p>As you can see I copy all the GUIContent from my TileInfoList into an array which only has the GUIContent (this is useful to draw a button grid ;) ). I let it GUICOntentList be filled in automatically to make sure it has the same order as my TileInfoList.</p>*_
_*<p>Now the problem is that the Awake() method only gets called when the script is attached to an object, which is not ideal. Also because of this I can't make the class static (just it's methods & variables :( ).</p>*_
_*<p>So my question is: is there a way to lat the GUIContentList be filled in automatically in a static class ? So I don't have to attach the script to an object, neither let it inherit from MonoBeheviour.</p>*_
_*<h2>Thanks !</h2>*_
_*<p>-Pablo</p>*_

Ok, I've solved my own problem :P Looked around some more and found out about a "static constructor". This fixed my problem, now my class looks like this:

static public class TileType //no more MonoBehaviour
{   
    //Make TileInfoList
    private static List<TileInfo> TileInfoList; 

    // The GUIContent list will be filled in automaticly based on the TileInfoList
    public static GUIContent[] GUIContentList;

    static TileType()
    {
        //Fill in TileInfoList
        TileInfoList= new List<TileInfo>
        {
            new TileInfo(0, "Blank",        new GUIContent("Blank"),    "Tiles/_BlankTile/BlankTile"),
            //more tileInfo's are made here ;)
        };

        //Create GUIContent list
        GUIContentList = new GUIContent[TileInfoList.Count];
        for(int i = 0; i < TileInfoList.Count; ++i)
        {
            GUIContentList _= TileInfoList*.GuiContent;*_
 _*}*_
 _*}*_
_*```*_
_*<p>Now I have a fully static class, where I can make one list "TileInfoList" will all the info, and then it's automatically filled in into my GUIContentList :D</p>*_
_*<p>Silly I fixed it so fast after asking this question myself xD Ahh well, then hopefully someone can use this information.</p>*_
_*<p>Greets</p>*_
_*<h2>-Pablo</h2>*_

A better way would be to do it in a public property, and make the array itself private

private static GUIContent[] guiContentList;
public static GUIContent[] GUIContentList
{
    get
    {
        if (guiContentList == null) InitializeContent();
        return guiContentList;
    }
}

where InitializeContent is a static function which initializes guiContentList