/// <summary> /// 输出对象_检查对象. /// </summary> /// <param name="iw">带缩进输出者.</param> /// <param name="obj">object.</param> /// <param name="context">Context.</param> /// <param name="tp">返回 类型.</param> /// <param name="showBaseName">返回 是否显示基类类型的名称.</param> /// <returns>检查是否支持此对象的输出, 支持的话返回true, 否则返回false.</returns> public virtual bool WriterObject_CheckObject(IIndentedWriter iw, object obj, IndentedWriterContext context, out Type tp, out bool showBaseName) { // check. tp = null; showBaseName = false; // 是否显示基类类型的名称. if (null == obj) { return(false); } tp = obj.GetType(); if (null == m_BaseType) { return(false); } #if NETFX_CORE TypeInfo ti = tp.GetTypeInfo(); if (ti.IsEnum) { return(false); } if (ti.IsPointer) { return(false); } if (ti.IsPrimitive) { return(false); } #else if (tp.IsEnum) { return(false); } if (tp.IsPointer) { return(false); } if (tp.IsPrimitive) { return(false); } #endif if ((m_Options & IndentedObjectFunctorOptions.OnlyType) != 0) { if (!m_BaseType.Equals(tp)) { return(false); } } else { #if NETFX_CORE if (!m_BaseType.GetTypeInfo().IsAssignableFrom(ti)) { return(false); } #else if (!m_BaseType.IsInstanceOfType(obj)) { return(false); } #endif if ((m_Options & IndentedObjectFunctorOptions.OnlyMember) != 0) { tp = m_BaseType; } else { showBaseName = !m_BaseType.Equals(tp) && !m_BaseType.Equals(typeof(object)); } } if ((m_Options & IndentedObjectFunctorOptions.AllowSimple) == 0) { if (IndentedWriterUtil.IsSimpleType(tp)) { return(false); } } return(true); }