public static IMemberInfo Get_MemberInfo(IModelRuntimeCalculatedMember runtimeCalculatedMember) { if (InterfaceBuilder.RuntimeMode) { CreateMemberInfo(runtimeCalculatedMember); return runtimeCalculatedMember.ModelClass.TypeInfo.FindMember(runtimeCalculatedMember.Name); } return ModelMemberLogic.Get_MemberInfo(runtimeCalculatedMember); }
static bool CheckTag(IModelRuntimeCalculatedMember runtimeCalculatedMember) { if (Equals(true, runtimeCalculatedMember.Tag)) { runtimeCalculatedMember.Tag = null; return true; } return false; }
static XPClassInfo FindXPClassInfo(IModelRuntimeCalculatedMember runtimeCalculatedMember) { var typeInfo = (TypeInfo)runtimeCalculatedMember.ModelClass.TypeInfo; return typeInfo.IsInterface ? FindDCXPClassInfo(typeInfo) : XpandModuleBase.Dictiorary.GetClassInfo(typeInfo.Type); }
static bool ValidState(IModelRuntimeCalculatedMember runtimeCalculatedMember, XpandCalcMemberInfo memberInfo) { if (CheckTag(runtimeCalculatedMember)) return false; if (memberInfo == null && !string.IsNullOrEmpty(runtimeCalculatedMember.Name)) { runtimeCalculatedMember.Tag = true; if (runtimeCalculatedMember.Type != null && !string.IsNullOrEmpty(runtimeCalculatedMember.AliasExpression)) { runtimeCalculatedMember.Tag = null; return true; } } return false; }
static XpandCalcMemberInfo CreateXpandCalcMemberInfo(IModelRuntimeCalculatedMember runtimeCalculatedMember, XPClassInfo xpClassInfo) { var xpandCalcMemberInfo = new XpandCalcMemberInfo(xpClassInfo, runtimeCalculatedMember.Name, runtimeCalculatedMember.Type, runtimeCalculatedMember.AliasExpression); var typesInfo = ((BaseInfo)runtimeCalculatedMember.ModelClass.TypeInfo).Store; typesInfo.RefreshInfo(xpClassInfo.ClassType); return xpandCalcMemberInfo; }
static void CreateMemberInfo(IModelRuntimeCalculatedMember runtimeCalculatedMember) { XPClassInfo classInfo = FindXPClassInfo(runtimeCalculatedMember); var xpandCalcMemberInfo = (XpandCalcMemberInfo)classInfo.FindMember(runtimeCalculatedMember.Name); if (ValidState(runtimeCalculatedMember, xpandCalcMemberInfo)) { var xpClassInfo = FindXPClassInfo(runtimeCalculatedMember); var calcMemberInfo = (XpandCalcMemberInfo)xpClassInfo.FindMember(runtimeCalculatedMember.Name); if (calcMemberInfo == null) { xpandCalcMemberInfo = CreateXpandCalcMemberInfo(runtimeCalculatedMember, xpClassInfo); } } UpdateAliasExpression(xpandCalcMemberInfo, runtimeCalculatedMember.AliasExpression); }