public T GetPreValue <T>(PropertyIndex propIndex, Func <PreValue, T> output, T defaultValue) { var index = (int)propIndex; var vals = GetPreValues(); return(vals.Count >= index + 1 ? output((PreValue)vals[index]) : defaultValue); }
public TypeInfo GatherTypeInfo() { IsArray = Typ.IsArray; if (typeof(IDynamicMetaObjectProvider).IsAssignableFrom(Typ)) { IsDynamic = true; } if (!IsArray && !IsDynamic) { Properties = Typ.GetProperties(); PropertyLength = Properties.Length; int index = 0; foreach (var propInfo in Properties) { PropertyIndex.Add(propInfo.Name, index); RetrieveAdditionalTypeInfo(propInfo, index); index++; } } else if (IsArray) { ArrayLength = Typ.GetArrayRank(); } return(this); }
private void GatherTypeInfos(Type typ) { IsArray = typ.IsArray; if (typeof(IDynamicMetaObjectProvider).IsAssignableFrom(typ)) { IsDynamic = true; } if (!IsArray && !IsDynamic) { Properties = typ.GetProperties(); PropertyLength = Properties.Length; int index = 0; foreach (var propInfo in Properties) { PropertyNames.Add(propInfo.Name); PropertyIndex.Add(propInfo.Name, index); AddColumnMappingAttribute(propInfo); AddExcelColumnAttribute(propInfo, index); AddMergeIdColumnNameAttribute(propInfo); AddUnderlyingType(propInfo); index++; } } else if (IsArray) { ArrayLength = typ.GetArrayRank(); } }
/// <summary> /// 添加属性 /// </summary> /// <param name="property">属性信息</param> /// <param name="propertyMethod">函数信息</param> public void PushBox(PropertyIndex property, MethodInfo propertyMethod) { Label end = default(Label); MethodInfo isOutputMethod = SerializeMethodCache.GetIsOutputMethod(property.Member.PropertyType); if (isOutputMethod != null) { generator.Emit(OpCodes.Ldarg_0); if (isValueType) { generator.Emit(OpCodes.Ldarga_S, 1); } else { generator.Emit(OpCodes.Ldarg_1); } generator.call(propertyMethod); generator.call(isOutputMethod); generator.Emit(OpCodes.Brfalse, end = generator.DefineLabel()); } bool isCustom = false; MethodInfo method = SerializeMethodCache.GetMemberMethodInfo(property.Member.PropertyType, ref isCustom); if (isCustom) { LocalBuilder loadMember = generator.DeclareLocal(property.Member.PropertyType); if (isValueType) { generator.Emit(OpCodes.Ldarga_S, 1); } else { generator.Emit(OpCodes.Ldarg_1); } generator.call(propertyMethod); generator.Emit(OpCodes.Stloc_0); generator.Emit(OpCodes.Ldloca_S, loadMember); generator.Emit(OpCodes.Ldarg_0); } else { generator.Emit(OpCodes.Ldarg_0); if (isValueType) { generator.Emit(OpCodes.Ldarga_S, 1); } else { generator.Emit(OpCodes.Ldarg_1); } generator.call(propertyMethod); } generator.call(method); if (isOutputMethod != null) { generator.MarkLabel(end); } }
private void lbx_property_names_SelectionChanged(object sender, SelectionChangedEventArgs e) { //get the selected proprety index PropertyIndex lbi = ((sender as ListBox).SelectedItem as PropertyIndex); gvm.changeValues(lbi); gvm.pressed = true; regLineGraph.ResetAllAxes(); }
public void firstTime() { lbx_property_names.SelectedIndex = 0; PropertyIndex prop = lbx_property_names.SelectedItem as PropertyIndex; propretyValue.InvalidatePlot(true); correlativeProprety.InvalidatePlot(true); regLineGraph.InvalidatePlot(true); gvm.changeValues(prop); }
/// <summary> /// 设置属性信息 /// </summary> /// <param name="property"></param> /// <returns></returns> public bool Set(PropertyIndex property) { GetProperty = property.Member.GetGetMethod(true); bool?isUtf8 = set(property.Member.PropertyType); if (isUtf8 == null) { return((property.GetAttribute <SignMemberAttribute>(false) ?? SignMemberAttribute.Default).IsEncodeUtf8); } return(isUtf8.Value); }
private void GatherTypeInfos(Type typ) { IsArray = typ.IsArray; if (!typ.IsArray) { Properties = typ.GetProperties(); PropertyLength = Properties.Length; int index = 0; foreach (var propInfo in Properties) { PropertyNames.Add(propInfo.Name); PropertyIndex.Add(propInfo.Name, index++); } } }
/// <summary> /// Helper method to save/create pre value values in the db /// </summary> /// <param name="propIndex"></param> /// <param name="value"></param> /// <param name="currentVals"></param> private void SavePreValue(PropertyIndex propIndex, string value, SortedList currentVals) { var index = (int)propIndex; if (currentVals.Count >= ((int)propIndex + 1)) { //update ((PreValue)currentVals[index]).Value = value; ((PreValue)currentVals[index]).Save(); } else { //insert PreValue.MakeNew(m_DataType.DataTypeDefinitionId, value); } }
public void SavePreValue(PropertyIndex propIndex, string value, SortedList currentVals) { var index = (int)propIndex; if (currentVals.Count >= (index + 1)) { ((PreValue)currentVals[index]).Value = value; ((PreValue)currentVals[index]).SortOrder = index + 1; ((PreValue)currentVals[index]).Save(); } else { PreValue preValue = PreValue.MakeNew(_dataType.DataTypeDefinitionId, value); preValue.SortOrder = index + 1; preValue.Save(); } }
private void GatherTypeInfos(Type typ) { IsArray = typ.IsArray; if (!typ.IsArray) { Properties = typ.GetProperties(); PropertyLength = Properties.Length; int index = 0; foreach (var propInfo in Properties) { PropertyNames.Add(propInfo.Name); PropertyIndex.Add(propInfo.Name, index); AddColumnMappingAttribute(propInfo); AddExcelColumnAttribute(propInfo, index); index++; } } }
/// <summary>Returns the set of events that have the same property value as the given event. </summary> /// <param name="keys">to compare against</param> /// <returns>set of events with property value, or null if none found (never returns zero-sized set)</returns> public override ISet <EventBean> Lookup(Object[] keys) { for (int i = 0; i < keys.Length; i++) { var coercionType = CoercionTypes[i]; var key = keys[i]; if ((key != null) && (key.GetType() != coercionType)) { if (key.IsNumber()) { key = CoercerFactory.CoerceBoxed(key, CoercionTypes[i]); keys[i] = key; } } } return(PropertyIndex.Get(new MultiKeyUntyped(keys))); }
/// <summary> /// 添加属性 /// </summary> /// <param name="property">属性信息</param> /// <param name="propertyMethod">函数信息</param> public void Push(PropertyIndex property, MethodInfo propertyMethod) { Label end = generator.DefineLabel(); push(property.Member.Name, property.MemberIndex, end); bool isCustom = false; MethodInfo method = SerializeMethodCache.GetMemberMethodInfo(property.Member.PropertyType, ref isCustom); if (isCustom) { LocalBuilder loadMember = generator.DeclareLocal(property.Member.PropertyType); if (isValueType) { generator.Emit(OpCodes.Ldarga_S, 2); } else { generator.Emit(OpCodes.Ldarg_2); } generator.call(propertyMethod); generator.Emit(OpCodes.Stloc_0); generator.Emit(OpCodes.Ldloca_S, loadMember); generator.Emit(OpCodes.Ldarg_1); } else { generator.Emit(OpCodes.Ldarg_1); if (isValueType) { generator.Emit(OpCodes.Ldarga_S, 2); } else { generator.Emit(OpCodes.Ldarg_2); } generator.call(propertyMethod); } generator.call(method); generator.MarkLabel(end); }
/// <summary> /// 添加属性 /// </summary> /// <param name="property">属性信息</param> /// <param name="propertyMethod">函数信息</param> public void Push(PropertyIndex property, MethodInfo propertyMethod) { isName(); Type memberType = property.Member.PropertyType; LocalBuilder loadMember = generator.DeclareLocal(memberType); generator.initobj(memberType, loadMember); bool isCustom = false; MethodInfo method = ParseMethodCache.GetMemberMethodInfo(memberType, ref isCustom); if (isCustom) { generator.Emit(OpCodes.Ldloca, loadMember); generator.Emit(OpCodes.Ldarg_0); } else { generator.Emit(OpCodes.Ldarg_0); generator.Emit(OpCodes.Ldloca, loadMember); } generator.call(method); generator.Emit(OpCodes.Ldarg_1); if (!isValueType) { generator.Emit(OpCodes.Ldind_Ref); } generator.Emit(OpCodes.Ldloc, loadMember); generator.call(propertyMethod); nextIndex(); if (isMemberMap) { generator.memberMapSetMember(OpCodes.Ldarg_3, property.MemberIndex); } }
public override string ToString() { string snn = null; if (PropertyIndex >= 0) { snn = PropertyIndex.ToString() + ", "; } snn += ChPhisical.ToString() + ", " + ranges[Range] + ", " + modes[Mode] + ", " + Avg.ToString() + ", " + Gain.ToString(); if (IOffset != 0) { snn += ", " + IOffset.ToString(); } if (IsPersent) { snn += ", %"; } return(snn); }
/// <summary> /// 添加属性 /// </summary> /// <param name="property">属性信息</param> /// <param name="propertyMethod">函数信息</param> public void PushBox(PropertyIndex property, MethodInfo propertyMethod) { bool isCustom = false; MethodInfo method = SerializeMethodCache.GetMemberMethodInfo(property.Member.PropertyType, ref isCustom); if (isCustom) { LocalBuilder loadMember = generator.DeclareLocal(property.Member.PropertyType); if (isValueType) { generator.Emit(OpCodes.Ldarga_S, 1); } else { generator.Emit(OpCodes.Ldarg_1); } generator.call(propertyMethod); generator.Emit(OpCodes.Stloc_0); generator.Emit(OpCodes.Ldloca_S, loadMember); generator.Emit(OpCodes.Ldarg_0); } else { generator.Emit(OpCodes.Ldarg_0); if (isValueType) { generator.Emit(OpCodes.Ldarga_S, 1); } else { generator.Emit(OpCodes.Ldarg_1); } generator.call(propertyMethod); } generator.call(method); }
/// <summary>Returns the set of events that have the same property value as the given event. </summary> /// <returns>set of events with property value, or null if none found (never returns zero-sized set)</returns> public override ISet <EventBean> Lookup(Object key) { key = EventBeanUtility.Coerce(key, _coercionType); return(PropertyIndex.Get(key)); }
/// <summary> /// 添加属性 /// </summary> /// <param name="property">属性信息</param> /// <param name="propertyMethod">函数信息</param> /// <param name="attribute">XML序列化成员配置</param> public void Push(PropertyIndex property, MethodInfo propertyMethod, MemberAttribute attribute) { Label end = generator.DefineLabel(); generator.memberMapIsMember(OpCodes.Ldarg_0, property.MemberIndex); generator.Emit(OpCodes.Brfalse, end); MethodInfo isOutputMethod = SerializeMethodCache.GetIsOutputMethod(property.Member.PropertyType); if (isOutputMethod != null) { generator.Emit(OpCodes.Ldarg_1); if (isValueType) { generator.Emit(OpCodes.Ldarga_S, 2); } else { generator.Emit(OpCodes.Ldarg_2); } generator.call(propertyMethod); generator.call(isOutputMethod); generator.Emit(OpCodes.Brfalse, end); } SerializeMemberDynamicMethod.WriteName(generator, OpCodes.Ldloc_0, property.Member.Name, false); if (attribute != null && attribute.ItemName != null) { generator.Emit(OpCodes.Ldarg_1); generator.Emit(OpCodes.Ldstr, attribute.ItemName); generator.Emit(OpCodes.Stfld, SerializeMemberDynamicMethod.ItemNameField); } bool isCustom = false; MethodInfo method = SerializeMethodCache.GetMemberMethodInfo(property.Member.PropertyType, ref isCustom); if (isCustom) { LocalBuilder loadMember = generator.DeclareLocal(property.Member.PropertyType); if (isValueType) { generator.Emit(OpCodes.Ldarga_S, 2); } else { generator.Emit(OpCodes.Ldarg_2); } generator.call(propertyMethod); generator.Emit(OpCodes.Stloc_0); generator.Emit(OpCodes.Ldloca_S, loadMember); generator.Emit(OpCodes.Ldarg_1); } else { generator.Emit(OpCodes.Ldarg_1); if (isValueType) { generator.Emit(OpCodes.Ldarga_S, 2); } else { generator.Emit(OpCodes.Ldarg_2); } generator.call(propertyMethod); } generator.call(method); SerializeMemberDynamicMethod.WriteName(generator, OpCodes.Ldloc_0, property.Member.Name, true); generator.MarkLabel(end); }
///<summary> /// Generic method to return a strongly typed object from the pre value bucket ///</summary> ///<param name="index"></param> ///<param name="output"></param> ///<param name="defaultVal"></param> ///<typeparam name="T"></typeparam> ///<returns></returns> private T GetPreValue <T>(PropertyIndex index, Func <PreValue, T> output, T defaultVal) { var vals = GetPreValues(); return(vals.Count >= (int)index + 1 ? output((PreValue)vals[(int)index]) : defaultVal); }
public override string ToString() { return(PropertyIndex.ToString()); }
public PropertyIndex GetPropertySearch(int pageSize, int pageIndex) { DateTime start = DateTime.Now; using (SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=dinhgianhadat.vn;Integrated Security=True;MultipleActiveResultSets=True;")) { conn.Open(); SqlCommand cmd = new SqlCommand("SP_F_Property_dgnd_Search", conn); cmd.CommandType = CommandType.StoredProcedure; //var priceFirst = GetListPropertyPriceStatic().FirstOrDefault(r => r.Id == options.PriceId && r.AdsType == options.AdsTypeId); //options.MinPriceProposed = priceFirst != null ? priceFirst.FromValue : options.MinPriceProposed; //options.MaxPriceProposed = priceFirst != null ? priceFirst.ToValue : options.MaxPriceProposed; //var areaFirst = GetListPropertyAreaStatic().FirstOrDefault(r => r.Id == options.AreaId); //options.MinAreaTotal = areaFirst != null ? areaFirst.FromValue : options.MinAreaTotal; //options.MaxAreaTotal = areaFirst != null ? areaFirst.ToValue : options.MaxAreaTotal; //options.WardId = options.WardId == 0 ? -1 : options.WardId; cmd.Parameters.AddWithValue("@pageSize", pageSize); cmd.Parameters.AddWithValue("@pageIndex", pageIndex); //cmd.Parameters.AddWithValue("@domainGroupId", options.DomainGroupId); //cmd.Parameters.AddWithValue("@adsTypeId", options.AdsTypeId); //cmd.Parameters.AddWithValue("@provinceId", options.ProvinceId); //cmd.Parameters.AddWithValue("@districtId", options.DistrictId); //cmd.Parameters.AddWithValue("@wardId", options.WardId); //cmd.Parameters.AddWithValue("@streetId", options.StreetId); //cmd.Parameters.AddWithValue("@apartmentId", options.ApartmentId); //cmd.Parameters.AddWithValue("@directionId", options.DirectionId); //cmd.Parameters.AddWithValue("@locationId", options.LocationId); //cmd.Parameters.AddWithValue("@MinAreaTotal", options.MinAreaTotal); //cmd.Parameters.AddWithValue("@MaxAreaTotal", options.MaxAreaTotal); //cmd.Parameters.AddWithValue("@MinPriceProposed", options.MinPriceProposed); //cmd.Parameters.AddWithValue("@MaxPriceProposed", options.MaxPriceProposed); //NOTE: @typeCssClassesLand has been hard code in DB //added 27/03/2016 var reader = cmd.ExecuteReader(); var model = new PropertyIndex(); model.ListProperties = new List <PropertyItem>(); reader.Read(); int total = (int)reader["TotalCount"]; model.TotalCount = total; // gets the second reader.NextResult(); while (reader.Read()) { var item = new PropertyItem { Id = int.Parse(reader["Id"].ToString()), Content = reader["Content"].ToString(), Title = reader["Title"].ToString(), Note = reader["Note"].ToString(), Floors = ConvertUtility.ToDouble(reader["Floors"].ToString()), Bedrooms = ConvertUtility.ToInt32(reader["Bedrooms"].ToString()), Bathrooms = ConvertUtility.ToInt32(reader["Bathrooms"].ToString()), AddressNumber = reader["AddressNumber"].ToString(), AddressCorner = reader["AddressCorner"].ToString(), CreatedDate = ConvertUtility.ToDateTime(reader["CreatedDate"].ToString(), default(DateTime)), LastUpdatedDate = ConvertUtility.ToDateTime(reader["LastUpdatedDate"].ToString(), default(DateTime)), AdsExpirationDate = ConvertUtility.ToDateTime(reader["AdsExpirationDate"].ToString(), default(DateTime)), AlleyWidth = !string.IsNullOrEmpty(reader["AlleyWidth"].ToString()) ? double.Parse(reader["AlleyWidth"].ToString()) : default(double), PriceProposed = ConvertUtility.ToDouble(reader["PriceProposed"].ToString()), PriceProposedInVND = ConvertUtility.ToDouble(reader["PriceProposedInVND"].ToString()), //-- PriceEstimatedInVND = ConvertUtility.ToDouble(reader["PriceEstimatedInVND"].ToString()), //-- AreaUsable = ConvertUtility.ToDouble(reader["AreaUsable"].ToString()), AreaTotalWidth = ConvertUtility.ToDouble(reader["AreaTotalWidth"].ToString()), AreaTotalLength = ConvertUtility.ToDouble(reader["AreaTotalLength"].ToString()), AreaTotal = ConvertUtility.ToDouble(reader["AreaTotal"].ToString()), ApartmentId = ConvertUtility.ToInt32(reader["ApartmentId"].ToString()), AdsType = new PropertyBase { ShortName = reader["AdsTypeShortName"].ToString(), CssClass = reader["AdsTypeCssClass"].ToString(), Id = int.Parse(reader["AdsTypeId"].ToString()) }, Location = new PropertyBase { Id = ConvertUtility.ToInt32(reader["LocationId"].ToString()), CssClass = reader["LocationCssClass"].ToString(), Name = reader["LocationName"].ToString(), ShortName = reader["LocationShortName"].ToString() }, PaymentMethod = new PropertyBase { Id = ConvertUtility.ToInt32(reader["PaymentMethodId"].ToString()), Name = reader["PaymentMethodName"].ToString(), CssClass = reader["PaymentMethodCssClass"].ToString(), ShortName = reader["PaymentMethodShortName"].ToString() }, ImageDefaultAvatar = reader["ImageDefaultAvatar"].ToString() }; model.ListProperties.Add(item); } reader.Close(); return(model); } }
public void Given() { _index = new PropertyIndex<Foo>(_fs, _path, "AwesomeIndex", f => new { f.Name }); _index.Inspect(5, new Foo { Name = "Arthur" }); }
/// <summary> /// 添加属性 /// </summary> /// <param name="property"></param> /// <param name="index"></param> /// <returns>是否需要utf-8编码</returns> public bool Push(PropertyIndex property, int index) { Type type = property.Member.PropertyType; MethodInfo method = property.Member.GetGetMethod(true); if (type.IsValueType) { MethodInfo numberToStringMethod; if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable <>)) { AutoCSer.Metadata.StructGenericType StructGenericType = AutoCSer.Metadata.StructGenericType.Get(type); Label end = generator.DefineLabel(); if (isValueType) { generator.Emit(OpCodes.Ldarga_S, 0); } else { generator.Emit(OpCodes.Ldarg_0); } generator.Emit(OpCodes.Call, method); generator.Emit(OpCodes.Call, StructGenericType.GetNullableHasValueMethod); generator.Emit(OpCodes.Brfalse_S, end); generator.Emit(OpCodes.Ldarg_1); generator.int32(index); if (isValueType) { generator.Emit(OpCodes.Ldarga_S, 0); } else { generator.Emit(OpCodes.Ldarg_0); } generator.Emit(OpCodes.Call, method); generator.Emit(OpCodes.Call, StructGenericType.GetNullableValueMethod); Type nullableType = type.GetGenericArguments()[0]; if (nullableType.IsEnum) { numberToStringMethod = null; generator.Emit(OpCodes.Box, nullableType); generator.Emit(OpCodes.Callvirt, AutoCSer.Net.WebClient.Emit.Pub.GetToStringMethod(typeof(object))); } else { generator.Emit(OpCodes.Call, (numberToStringMethod = AutoCSer.Net.WebClient.Emit.Pub.GetNumberToStringMethod(nullableType)) ?? AutoCSer.Net.WebClient.Emit.Pub.GetToStringMethod(nullableType)); } generator.Emit(OpCodes.Stelem_Ref); generator.MarkLabel(end); } else { generator.Emit(OpCodes.Ldarg_1); generator.int32(index); if (isValueType) { generator.Emit(OpCodes.Ldarga_S, 0); } else { generator.Emit(OpCodes.Ldarg_0); } generator.Emit(OpCodes.Call, method); if (type.IsEnum) { numberToStringMethod = null; generator.Emit(OpCodes.Box, type); generator.Emit(OpCodes.Callvirt, AutoCSer.Net.WebClient.Emit.Pub.GetToStringMethod(typeof(object))); } else { generator.Emit(OpCodes.Call, (numberToStringMethod = AutoCSer.Net.WebClient.Emit.Pub.GetNumberToStringMethod(type)) ?? AutoCSer.Net.WebClient.Emit.Pub.GetToStringMethod(type)); } generator.Emit(OpCodes.Stelem_Ref); } if (numberToStringMethod != null) { return(false); } } else { Label end = default(Label); if (type != typeof(string)) { if (isValueType) { generator.Emit(OpCodes.Ldarga_S, 0); } else { generator.Emit(OpCodes.Ldarg_0); } generator.call(method); generator.Emit(OpCodes.Brfalse_S, end = generator.DefineLabel()); } generator.Emit(OpCodes.Ldarg_1); generator.int32(index); if (isValueType) { generator.Emit(OpCodes.Ldarga_S, 0); } else { generator.Emit(OpCodes.Ldarg_0); } generator.call(method); if (type != typeof(string)) { generator.Emit(OpCodes.Callvirt, AutoCSer.Net.WebClient.Emit.Pub.GetToStringMethod(type)); } generator.Emit(OpCodes.Stelem_Ref); if (type != typeof(string)) { generator.MarkLabel(end); } } return((property.GetAttribute <SignMemberAttribute>(false) ?? SignMemberAttribute.Default).IsEncodeUtf8); }
/// <summary> /// 添加属性 /// </summary> /// <param name="property">属性信息</param> /// <param name="propertyMethod">函数信息</param> /// <param name="attribute">XML序列化成员配置</param> public void Push(PropertyIndex property, MethodInfo propertyMethod, MemberAttribute attribute) { Label end = default(Label); MethodInfo isOutputMethod = SerializeMethodCache.GetIsOutputMethod(property.Member.PropertyType); if (isOutputMethod != null) { generator.Emit(OpCodes.Ldarg_0); if (isValueType) { generator.Emit(OpCodes.Ldarga_S, 1); } else { generator.Emit(OpCodes.Ldarg_1); } generator.call(propertyMethod); generator.call(isOutputMethod); generator.Emit(OpCodes.Brfalse_S, end = generator.DefineLabel()); } nameStart(property.Member.Name, attribute); bool isCustom = false; MethodInfo method = SerializeMethodCache.GetMemberMethodInfo(property.Member.PropertyType, ref isCustom); if (isCustom) { LocalBuilder loadMember = generator.DeclareLocal(property.Member.PropertyType); if (isValueType) { generator.Emit(OpCodes.Ldarga_S, 1); } else { generator.Emit(OpCodes.Ldarg_1); } generator.call(propertyMethod); generator.Emit(OpCodes.Stloc_0); generator.Emit(OpCodes.Ldloca_S, loadMember); generator.Emit(OpCodes.Ldarg_0); } else { generator.Emit(OpCodes.Ldarg_0); if (isValueType) { generator.Emit(OpCodes.Ldarga_S, 1); } else { generator.Emit(OpCodes.Ldarg_1); } generator.call(propertyMethod); } generator.call(method); generator.charStreamSimpleWriteNotNull(OpCodes.Ldloc_0, SerializeMethodCache.GetNameEndPool(property.Member.Name), property.Member.Name.Length + 3); if (isOutputMethod != null) { generator.MarkLabel(end); } }
static PropertyIndex ParseIndex(string Index) { PropertyIndex pIndex = new PropertyIndex(); List<Type> pTypes = new List<Type>(); List<object> pValues = new List<object>(); int indexValue = 0; string[] Indexes = Index.Split(','); for (int i = 0; i < Indexes.Length; i++) { if (Indexes[i] == "") { continue; } else if (int.TryParse(Indexes[i], out indexValue)) { pTypes.Add(typeof(int)); pValues.Add(indexValue); } else if (Indexes[i].StartsWith("'") && Indexes[i].EndsWith("'")) { pTypes.Add(typeof(string)); pValues.Add( Indexes[i].Substring(1, Indexes[i].Length - 2) ); } else { throw new Exception( string.Format("Parse Error On Index[{0}]@[{1}]", Indexes[i], Index) ); } } pIndex.Types = pTypes.ToArray(); pIndex.Value = pValues.ToArray(); return pIndex; }