SenseNet.ContentRepository.ContentList.SetFieldSlots C# (CSharp) Method

SetFieldSlots() private method

private SetFieldSlots ( ) : void
return void
        private void SetFieldSlots()
        {
            //-- Field slot indices and readonly.
            foreach (FieldSetting fieldSetting in this.FieldSettings)
            {
                if (fieldSetting.DataTypes.Length == 0)
                    continue;
                Type[][] slots = fieldSetting.HandlerSlots;
                for (int i = 0; i < fieldSetting.Bindings.Count; i++)
                {
                    string propName = fieldSetting.Bindings[i];
                    Type propertyType = null;
                    bool readOnly = false;

                    //-- generic property
                    RepositoryDataType dataType = fieldSetting.DataTypes[i];
                    switch (dataType)
                    {
                        case RepositoryDataType.String:
                        case RepositoryDataType.Text:
                            propertyType = typeof(string);
                            break;
                        case RepositoryDataType.Int:
                            propertyType = typeof(Int32);
                            break;
                        case RepositoryDataType.Currency:
                            propertyType = typeof(decimal);
                            break;
                        case RepositoryDataType.DateTime:
                            propertyType = typeof(DateTime);
                            break;
                        case RepositoryDataType.Binary:
                            propertyType = typeof(BinaryData);
                            break;
                        case RepositoryDataType.Reference:
                            propertyType = typeof(NodeList<Node>);
                            break;
                        default:
                            throw new ContentRegistrationException(String.Concat("Unknown datatype: ", dataType), this.Name, fieldSetting.Name);
                    }

                    for (int j = 0; j < slots[i].Length; j++)
                    {
                        ////-- for your information:
                        //typeof(Node).IsAssignableFrom(typeof(User)) ==> true
                        //typeof(User).IsAssignableFrom(typeof(Node)) ==> false
                        //-- this is the bad code:
                        //if (propertyType.IsAssignableFrom(slots[i][j]))
                        //-- this is the good:
                        try
                        {
                            var a = fieldSetting.Name[0] == '#';
                            var b = fieldSetting.DataTypes.Length == 0;
                            var x = fieldSetting.HandlerSlotIndices[i];
                        }
                        catch
                        {
                            throw;
                        }
                        if (slots[i][j].IsAssignableFrom(propertyType))
                        {
                            fieldSetting.HandlerSlotIndices[i] = j;
                            fieldSetting.PropertyIsReadOnly = readOnly;
                            break;
                        }
                    }
                }
                fieldSetting.Initialize();
            }
        }