using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MW5.Shared { /// /// Simple implementation of IConvertible as a workaround for issue with Syncfusion's GridGroupingControl /// described here: http ://www.syncfusion.com/forums/54409/data-binding-custom-object-ilist-with-descendant-objects-in-the-list /// Wouldn't it be better if Syncfusion guys added this check in their source, rather than force everybody to maim /// their business objects? /// public class ConvertibleBase: IConvertible { TypeCode IConvertible.GetTypeCode() { throw new NotImplementedException(); } bool IConvertible.ToBoolean(IFormatProvider provider) { throw new NotImplementedException(); } char IConvertible.ToChar(IFormatProvider provider) { throw new NotImplementedException(); } sbyte IConvertible.ToSByte(IFormatProvider provider) { throw new NotImplementedException(); } byte IConvertible.ToByte(IFormatProvider provider) { throw new NotImplementedException(); } short IConvertible.ToInt16(IFormatProvider provider) { throw new NotImplementedException(); } ushort IConvertible.ToUInt16(IFormatProvider provider) { throw new NotImplementedException(); } int IConvertible.ToInt32(IFormatProvider provider) { throw new NotImplementedException(); } uint IConvertible.ToUInt32(IFormatProvider provider) { throw new NotImplementedException(); } long IConvertible.ToInt64(IFormatProvider provider) { throw new NotImplementedException(); } ulong IConvertible.ToUInt64(IFormatProvider provider) { throw new NotImplementedException(); } float IConvertible.ToSingle(IFormatProvider provider) { throw new NotImplementedException(); } double IConvertible.ToDouble(IFormatProvider provider) { throw new NotImplementedException(); } decimal IConvertible.ToDecimal(IFormatProvider provider) { throw new NotImplementedException(); } DateTime IConvertible.ToDateTime(IFormatProvider provider) { throw new NotImplementedException(); } public virtual string ToString(IFormatProvider provider) { return GetType().FullName; } object IConvertible.ToType(Type conversionType, IFormatProvider provider) { if (conversionType.IsAssignableFrom(GetType())) { return this; } throw new NullReferenceException("Can't convert to: " + conversionType.FullName); } } }