using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web.DynamicData; namespace MonoTests.Common { class FieldFormattingOptions : IFieldFormattingOptions { Dictionary propertyValues = new Dictionary (); public bool ApplyFormatInEditMode { get { return GetProperty ("ApplyFormatInEditMode"); } } public bool ConvertEmptyStringToNull { get { return GetProperty ("ConvertEmptyStringToNull"); } } public string DataFormatString { get { return GetProperty ("DataFormatString"); } } public bool HtmlEncode { get { return GetProperty ("HtmlEncode"); } } public string NullDisplayText { get { return GetProperty ("NullDisplayText"); } } T GetProperty (string name) { if (String.IsNullOrEmpty (name)) throw new ArgumentNullException ("name"); object v; if (propertyValues.TryGetValue (name, out v)) { if (v == null) return default (T); if (typeof (T).IsAssignableFrom (v.GetType ())) { return (T) v; } throw new InvalidOperationException ("Invalid value type. Expected '" + typeof (T) + "' and got '" + v.GetType () + "'"); } return default (T); } public void SetProperty (string name, object value) { if (String.IsNullOrEmpty (name)) return; if (propertyValues.ContainsKey (name)) propertyValues[name] = value; else propertyValues.Add (name, value); } } }