コード例 #1
0
        private void LoadAndChange <T> (String name, String file, IEnumerable <String> changes, TextWriter writer) where T : BaseEntity
        {
            T    entity   = BaseEntity.LoadFrom <T> (file);
            bool modified = false;

            foreach (var change in changes)
            {
                this.Log(Level.Verbose, "Patching {0} with '{1}'", name, change);

                int hash = entity.GetHashValue();
                BaseEntity.Change <T> (entity, change);
                int newHash = entity.GetHashValue();

                modified |= (hash != newHash);
                if (writer != null)
                {
                    writer.WriteLine("{0} {1} with '{2}'", (hash != newHash) ? "MODIFIED " : "UNTOUCHED", name, change);
                }
            }

            if (modified)
            {
                this.Log(Level.Info, String.Format("Patching '{0}'...", name));
                entity.SaveTo(file);
            }
        }