i can't save my class to scriptable object

Hello, I have a class called Building, this class contains several lists from another class called MeshesType, and both classes are children of a class called BaseMesh.
First of all, I put the BaseMesh class code here:

BaseMesh codes

Also, the code of the MeshesType class is below:

MeshesType codes

And finally the Building class whose code is below.

Building codes

Also, I have a simple scriptable object in which a list of the Building class is stored.

And using the codes below, I put a building object in this list.

        public static void AddToBuildingsList(Building building)
        {
            if (!StaticResources.BuildingsList.Exists(t => t.Name.Equals(building.Name)))
            {

                StaticResources.BuildingsList.Add(building);
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
            }
        }

and BuildingList code is here:

        public static List<Building> BuildingsList = BuildingsListFromScriptableObject();
        private static List<Building> BuildingsListFromScriptableObject()
        {
            var buildingListScriptableObject =
                AssetDatabase.LoadAssetAtPath<BuildingListScriptableObject>("Assets/AC Smart Building/Resource/Content/BuildingList.asset");

            if (buildingListScriptableObject.BuildingsList == null)
            {
                Debug.LogError("Failed to load BuildingListScriptableObject.");
            }
            return buildingListScriptableObject.BuildingsList;
        }

For this scriptable object, I also created a customized inspector to show the specifications.
custom inspector code

// the full inspector image:

Everything is great, but when I close Unity, nothing is included in this scriptable object, and the buildings must be calculated again to show the information in this list.

// the empty inspector image

Nothing in your classes are serialisable. Unity can’t serialise properties.

Refer to the docs as to what can be serialised: Unity - Manual: Script serialization

But I created a scriptable object for all MeshesType classes and it is easily saved…

Also on top of all my classes is the [System.Serializable] attribute.

Doesn’t change the fact that Unity can’t serialise properties.

It can serialise fields, sure. The backing fields of properties, also sure. But not properties, auto-implemented or otherwise.

brother can you give me some more help? i don’t understand that link,that you give me…
can you write an example for how i can serialize?

// public fields are serialized
public int SomeInt;

// is serialized
[SerializeField]
private int _someIntOne;

// property is not serialised, backing value is
public int SomeIntTwo { get => _someIntTwo; set => _someIntTwo = value; }

[SerializeField]
private int _someIntTwo;

// backing field is serialized
[field: SerializeField]
public int SomeIntThree { get; set; }

// IS NOT SERIALIZED!
public int SomeIntFour { get; set; }

Brother, you are my savior! I really thank you!