/// <summary>写入枚举数据,复杂类型使用委托方法进行处理</summary> /// <param name="value">对象</param> /// <param name="type">类型</param> /// <param name="callback">使用指定委托方法处理复杂数据</param> /// <returns>是否写入成功</returns> public virtual Boolean WriteEnumerable(IEnumerable value, Type type, WriteObjectCallback callback) { if (value == null) { return(true); } type = CheckAndWriteType("WriteEnumerableType", value, type); //type = value.GetType(); if (type != null && !typeof(IEnumerable).IsAssignableFrom(type)) { throw new InvalidOperationException("目标类型不是枚举类型!"); } // 计算元素类型,如果无法计算,这里不能处理,否则能写不能读(因为不知道元素类型) var elementType = TypeX.GetElementType(type); //if (elementType == null) return false; Int32 i = 0; foreach (var item in value) { Depth++; if (!WriteItem(item, elementType, i++, callback)) { return(false); } Depth--; } return(true); }