Пример #1
0
        private void MergeDefinitions(ref MyObjectBuilder_Definitions baseDefinitions, MyObjectBuilder_Definitions newDefinitions)
        {
            var fields = newDefinitions.GetType().GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance);

            foreach (var field in fields)
            {
                var readValues = field.GetValue(newDefinitions);
                if (readValues != null)
                {
                    var currentValues = field.GetValue(baseDefinitions);
                    if (currentValues == null || !field.FieldType.IsArray)
                    {
                        field.SetValue(baseDefinitions, readValues);
                    }
                    else
                    {
                        // Merge together multiple values from seperate files.
                        var newArray = ArrayHelper.MergeGenericArrays(currentValues, readValues);
                        field.SetValue(baseDefinitions, newArray);
                    }
                }
            }
        }