/// <summary> /// 根据成员名称获取成员树节点 /// </summary> /// <param name="memberName">成员名称</param> /// <param name="isDepth">是否深度搜索,false表示当前节点子节点</param> /// <returns>成员树节点</returns> protected memberNode getMember(string memberName, out bool isDepth) { int memberIndex = 0; while (memberIndex != memberName.Length && memberName[memberIndex] == '.') { ++memberIndex; } memberName = memberName.Substring(memberIndex); memberIndex = currentMembers.Count - memberIndex - 1; if (memberIndex < 0) { memberIndex = 0; } memberNode value = currentMembers[memberIndex]; isDepth = false; if (memberName.Length != 0) { string[] names = memberName.Split('.'); for (; memberIndex >= 0; --memberIndex) { if ((value = currentMembers[memberIndex].Get(names[0])) != null) { value.Path = memberIndex == 0 ? names[0] : (path(memberIndex) + "." + names[0]); for (int nameIndex = 1; nameIndex != names.Length; ++nameIndex) { isDepth = true; if ((value = value.Get(names[nameIndex])) == null) { break; } value.Path = value.Parent.Path + "." + names[nameIndex]; } if (value == null) { break; } else { return(value); } } } error.Add(viewType.fullName() + " 未找到属性 " + currentMembers.lastOrDefault().FullPath + " . " + memberName); } return(value); }
/// <summary> /// 根据成员名称获取成员树节点 /// </summary> /// <param name="memberName">成员名称</param> /// <param name="isDepth">是否深度搜索,false表示当前节点子节点</param> /// <returns>成员树节点</returns> protected memberNode getMember(string memberName, out bool isDepth) { int memberIndex = 0; while (memberIndex != memberName.Length && memberName[memberIndex] == '.') { ++memberIndex; } memberName = memberName.Substring(memberIndex); memberIndex = currentMembers.Count - memberIndex - 1; if (memberIndex < 0) { memberIndex = 0; } memberNode value = currentMembers[memberIndex]; isDepth = false; if (memberName.Length != 0) { string[] names = memberName.Split('.'); for (int lastIndex = names.Length - 1; memberIndex >= 0; --memberIndex) { if ((value = currentMembers[memberIndex].Get(ref names[0], lastIndex == 0)) != null) { if (memberIndex == 0) { //keyValue<memberIndex, string> propertyIndex; //if (!propertyNames.TryGetValue(names[0], out propertyIndex)) propertyIndex.Value = names[0]; //value.Path = propertyIndex.Value; value.Path = names[0]; } else { value.Path = path(memberIndex) + "." + names[0]; } if (names.Length != 1) { isDepth = true; } for (int nameIndex = 1; nameIndex != names.Length; ++nameIndex) { if ((value = value.Get(ref names[nameIndex], nameIndex == lastIndex)) == null) { break; } value.Path = value.Parent.Path + "." + names[nameIndex]; } if (value == null) { break; } else { return(value); } } } string message = viewType.fullName() + " 未找到属性 " + currentMembers.lastOrDefault().FullPath + " . " + memberName; if (checkErrorMemberName(memberName)) { error.Message(message); return(null); } #if MONO log.Default.Real(message, false, false); #else error.Add(message); #endif } return(value); }