public virtual TypeInfo GetTypeForObject (object value) { if (value == null) throw new ArgumentNullException ("value"); var rt = value as IReflectableType; if (rt != null) return rt.GetTypeInfo (); throw new NotImplementedException (); }