public override bool TryGetMember(GetMemberBinder binder, out object result) { LibFieldObj fobj = null; if (_cols.TryGetValue(binder.Name, out fobj)) { if (string.IsNullOrEmpty(fobj.TBAliasNm)) { result = fobj.FieldNm; } else { result = string.Format("{0}{1}{2}", fobj.TBAliasNm, SysConstManage.Point, fobj.FieldNm); } return(true); } result = string.Empty; return(false); //return _cols.TryGetValue(binder.Name, out result); }
//public #region 私有函数 private void GetColumns() { _cols = new Dictionary <string, LibFieldObj>(); List <string> vals = new List <string>(); ColExtendedProperties colExtended = null; LibFieldObj fobj = null; string ckey = string.Empty; TableExtendedProperties tableExtended = DataTable.ExtendedProperties[SysConstManage.ExtProp] as TableExtendedProperties; if (_tbaliasmdic == null) { _tbaliasmdic = new Dictionary <string, string>(); } foreach (DataColumn c in DataTable.Columns) { fobj = new LibFieldObj(); colExtended = c.ExtendedProperties[SysConstManage.ExtProp] as ColExtendedProperties; if (colExtended != null) { if (colExtended.IsRelate) { if (!string.IsNullOrEmpty(colExtended.AliasName)) { ckey = colExtended.AliasName; //fobj.FieldNm = colExtended.AliasName; } else if (!string.IsNullOrEmpty(colExtended.ObjectNm)) { ckey = colExtended.ObjectNm; //fobj.FieldNm = colExtended.ObjectNm; } else { ckey = c.ColumnName; //fobj.FieldNm = c.ColumnName; } string key = string.Format("{0}{1}{2}", colExtended.FromDSID, colExtended.FromTableIndex, colExtended.SourceFieldNm); if (!_tbaliasmdic.ContainsKey(key)) { string v = string.Format("{0}{1}", LibSysUtils.ToCharByTableIndex(tableExtended.TableIndex), LibSysUtils.ToCharByTableIndex(colExtended.FromTableIndex)); //int t = vals.Where(i => i == v).Count(); int cout = vals.Where(i => i == v).Count(); if (cout == 0) { _tbaliasmdic.Add(key, string.Format("{0}", v)); } else { _tbaliasmdic.Add(key, string.Format("{0}{1}", v, cout)); } vals.Add(v); } fobj.TBAliasNm = _tbaliasmdic[key]; fobj.FieldNm = colExtended.FieldNm; } else { if (tableExtended != null) { fobj.TBAliasNm = LibSysUtils.ToCharByTableIndex(tableExtended.TableIndex).ToString(); } ckey = string.IsNullOrEmpty(colExtended.ObjectNm) ? c.ColumnName : colExtended.ObjectNm; fobj.FieldNm = c.ColumnName; } fobj.colNm = c.ColumnName; _cols.Add(ckey, fobj); } else { fobj.FieldNm = c.ColumnName; fobj.colNm = c.ColumnName; _cols.Add(fobj.FieldNm, fobj); } } Columns = new ColumnObj(_cols); }