LSLib.Granny.GR2.WritableSection.WriteInstance C# (CSharp) Method

WriteInstance() private method

private WriteInstance ( MemberDefinition definition, Type propertyType, object node ) : void
definition MemberDefinition
propertyType System.Type
node object
return void
        internal void WriteInstance(MemberDefinition definition, Type propertyType, object node)
        {
            if (definition.ArraySize == 0)
            {
                WriteElement(definition, propertyType, node);
                return;
            }

            if (propertyType.IsArray)
            {
                // If the property is a native array (ie. SomeType[]), create an array instance and set its values
                var elementType = propertyType.GetElementType();

                Array arr = node as Array;
                Debug.Assert(arr.Length == definition.ArraySize);
                for (int i = 0; i < definition.ArraySize; i++)
                {
                    WriteElement(definition, elementType, arr.GetValue(i));
                }
            }
            else
            {
                // For non-native arrays we always assume the property is an IList<T>
                var items = node as System.Collections.IList;
                var elementType = items.GetType().GetGenericArguments().Single();
                foreach (var element in items)
                {
                    WriteElement(definition, elementType, element);
                }
            }
        }