/* License: Microsoft Public License (Ms-PL) http://c4fdevkit.codeplex.com/license C4F Developer Kit */ using System; using System.IO; using System.Reflection; using System.Runtime.InteropServices; using System.Text; using System.Windows.Media.Imaging; public class MainClass{ /// <summary> /// Generates ToString functionality for a struct. This is an expensive way to do it, /// it exists for the sake of debugging while classes are in flux. /// Eventually this should just be removed and the classes should /// do this without reflection. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="object"></param> /// <returns></returns> public static string GenerateToString<T>(T @object) where T : struct { StringBuilder sbRet = new StringBuilder(); foreach (PropertyInfo property in typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance)) { if (0 != sbRet.Length) { sbRet.Append(", "); } // Assert.AreEqual(0, property.GetIndexParameters().Length); object value = property.GetValue(@object, null); string format = null == value ? "{0}: <null>" : "{0}: "{1}""; sbRet.AppendFormat(format, property.Name, value); } return sbRet.ToString(); } }