public override void Save(TextWriter writer, object value)
        {
            if (writer == null)
                throw new ArgumentNullException("writer");
            if (value == null)
                throw new ArgumentNullException("value");

            IPropertyStore pp = Adaptable.TryAdapt<IPropertyStore>(value);
            if (pp == null) {
                pp = Runtime.Properties.FromValue(value);
            }

            if (pp == null)
                throw Failure.NotAdaptableTo("value", value, typeof(IPropertyStore));

            using (PropertiesWriter pw = new PropertiesWriter(writer)) {
                pw.WriteProperties(pp);
            }
        }
 private void SaveCore(PropertiesWriter writer)
 {
     foreach (KeyValuePair<string, object> prop in this.properties) {
         writer.WriteProperty(prop.Key, prop.Value);
     }
 }
 public void Save(Stream stream, Encoding encoding)
 {
     using (StreamWriter writer = new StreamWriter(stream, encoding)) {
         using (PropertiesWriter pw = new PropertiesWriter(writer)) {
             SaveCore(pw);
         }
     }
 }
 public void Save(string fileName, bool append, Encoding encoding)
 {
     using (StreamWriter writer = new StreamWriter(fileName, append, encoding)) {
         using (PropertiesWriter pw = new PropertiesWriter(writer)) {
             SaveCore(pw);
         }
     }
 }
 public void Save(TextWriter writer)
 {
     using (PropertiesWriter pw = new PropertiesWriter(writer)) {
         SaveCore(pw);
     }
 }