public override void CustomizeTypesInfo(DevExpress.ExpressApp.DC.ITypesInfo typesInfo) { base.CustomizeTypesInfo(typesInfo); var typeInfos = typesInfo.PersistentTypes.Where(info => info.FindAttribute <PessimisticLockingMessageAttribute>() != null); foreach (var typeInfo in typeInfos) { var memberInfo = typeInfo.FindMember("LockedUserMessage"); if (memberInfo == null) { var xpClassInfo = Dictiorary.GetClassInfo(typeInfo.Type); var lockedUserMessageXpMemberInfo = new LockedUserMessageXpMemberInfo(xpClassInfo); lockedUserMessageXpMemberInfo.AddAttribute(new BrowsableAttribute(false)); XafTypesInfo.Instance.RefreshInfo(typeInfo); } } }
string GetNodeAlias(SelectStatement statement, string filterMemberName) { if (!TablesDictionary.ContainsKey(statement.TableName)) { var classInfo = Application.Model.BOModel.Select(mclass => Dictiorary.QueryClassInfo(mclass.TypeInfo.Type)).FirstOrDefault(info => info != null && info.TableName == statement.TableName); if (classInfo != null && !TablesDictionary.ContainsKey(classInfo.TableName)) { TablesDictionary.Add(classInfo.TableName, classInfo.ClassType); } else { throw new ArgumentException(statement.TableName); } } var fullName = TablesDictionary[statement.TableName].FullName; if (XafTypesInfo.Instance.FindTypeInfo(fullName).OwnMembers.FirstOrDefault(member => member.Name == filterMemberName) == null && statement.SubNodes.Any()) { return(statement.SubNodes[0].Alias); } return(statement.Alias); }