How do I set value ScriptableObject list element property in script?

[135613-ekran-alıntısı.png|135613]

If you can see the Cell size is initial value is 0. I want to resize Cell List in script. When I resize of Cell List property, I cant set value cell list element. I can’t set value Element 0. Coordinate.X or any other property.

[135614-ekran-alıntısı3.png|135614]

The problem is: When I create ScriptableObject from there I can create individual cells, but I want to create from within the script and the cell count is not specified.
And I want to set cell count in script, then I want to set value list elements one by one. I want to complete the process at one time because that’s not the runtime I am doing. I’m just creating the Scriptableobject from the JSON file. Here is My Code:

public class CrosswordGenerator : EditorWindow
{
    public CrosswordObject crossword;
    private string selectedPath;
    private string path;

    [MenuItem("Window/Crossword Generator")]
    static void Init()
    {
        CrosswordGenerator window = (CrosswordGenerator)EditorWindow.GetWindow(typeof(CrosswordGenerator));
        window.Show();
    }

    private void OnGUI()
    {
        EditorGUILayout.LabelField("");
        crossword = (CrosswordObject)EditorGUI.ObjectField(new Rect(3, 3, position.width - 6, 20), "Select Crossword", crossword, typeof(CrosswordObject), true);
        selectedPath = EditorGUILayout.TextField("File Path", selectedPath);
        if (GUILayout.Button("Select Json File"))
        {
            path = EditorUtility.OpenFilePanel("Load Data file", "", "");
            selectedPath = path;
        }
        if (GUILayout.Button("Generate Crossword"))
        {
            string dataAsJson = File.ReadAllText(path);
            Debug.Log("dataasjson" + dataAsJson);
            CrosswordData crosswordData = CrosswordData.FromJson(dataAsJson);

            crossword.crossword.Width = Convert.ToInt32(crosswordData.CrosswordCompiler.RectangularPuzzle.Crossword.Grid.Width);
            crossword.crossword.Height = Convert.ToInt32(crosswordData.CrosswordCompiler.RectangularPuzzle.Crossword.Grid.Height);

            ListExtras.Resize<CrosswordModel.Cell>(crossword.crossword.Cells, crosswordData.CrosswordCompiler.RectangularPuzzle.Crossword.Grid.Cell.Count);

            foreach (var pair in crossword.crossword.Cells.Zip(crosswordData.CrosswordCompiler.RectangularPuzzle.Crossword.Grid.Cell, (a, b) => new { crosswordCell = a, crosswordDataCell = b }))
            {
                if(pair.crosswordDataCell.X.Length <2 && pair.crosswordDataCell.Y.Length < 2)
                {
                    pair.crosswordCell.Coordinate.X = Convert.ToInt16(pair.crosswordDataCell.X);
                    pair.crosswordCell.Coordinate.Y = Convert.ToInt16(pair.crosswordDataCell.Y);
                }

            }

        }
    }
}

CrosswordObject crossword is my ScriptableObject and CrosswordData crosswordData is my data from JSON. if you look at the code, I am doing resize of list Cells.

ListExtras.Resize<CrosswordModel.Cell>(crossword.crossword.Cells, crosswordData.CrosswordCompiler.RectangularPuzzle.Crossword.Grid.Cell.Count);

And then I am doing 1 foreach statements from taking 2 list elements(using System.Linq Zip). When I set value Cell property I have taking error: “NullReferenceException: Object reference not set to an instance of an object”.

             if(pair.crosswordDataCell.X.Length <2 && pair.crosswordDataCell.Y.Length < 2)
             {
                 pair.crosswordCell.Coordinate.X = Convert.ToInt16(pair.crosswordDataCell.X);
                 pair.crosswordCell.Coordinate.Y = Convert.ToInt16(pair.crosswordDataCell.Y);
             }

I solve it. if I taking new instance from CrosswordModel.Coordinates, it solves everything.