static void Main(string[] args) { var foo = new Stats(123, 456, 7, 89); var fields = FieldSorter.GetSortedFields(foo.GetType()); foreach (DisplayAttribute att in fields.Keys) Console.WriteLine("{0}: {1} ({2}) == {3}", att.Order, att.Name, att.Description, fields[att].GetValue(foo, null)); null)); }
protected virtual bool ResolveFields(FtMeta meta, out string errorDescription) { FieldSorter.Rec[] sorterRecArray = new FieldSorter.Rec[fieldList.Count]; FieldReadElement[] sortedElements; for (int i = 0; i < fieldList.Count; i++) { FieldReadElement element = fieldList[i]; sorterRecArray[i].Target = element; sorterRecArray[i].Implicit = i; sorterRecArray[i].Explicit = element.ExplicitIndex; } int duplicateExplicitIndex; if (!FieldSorter.TrySort(sorterRecArray, out sortedElements, out duplicateExplicitIndex)) { errorDescription = string.Format(Properties.Resources.FieldedTextReadElement_ResolveFields_DuplicateExplicitIndexInFields, duplicateExplicitIndex); return(false); } else { errorDescription = ""; bool result = true; for (int i = 0; i < sortedElements.Length; i++) { FieldReadElement element = sortedElements[i]; FtMetaField field = meta.FieldList.New(element.DataType); if (!element.ResolveTo(field, out errorDescription)) { result = false; break; } } return(result); } }
private void AddFields(Type t) { int startind = myFields.Count; if (!IsPersistentType(t)) { return; } FieldInfo[] finfos = t.GetFields(BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.DeclaredOnly); foreach (FieldInfo fi in finfos) { string fname; if ((fname = fi.Name).StartsWith("_ndo")) { continue; } if (!fi.IsPrivate) { continue; } if (fi.IsInitOnly) { continue; } Type ft = fi.FieldType; // Typen, die nicht speicherbar sind. if (ft.IsInterface) { continue; } object[] attributes = fi.GetCustomAttributes(false); bool cont = false; foreach (System.Attribute attr in attributes) { string name; if ((name = attr.GetType().Name) == "NDOTransientAttribute") { cont = true; } if (name == "NDORelationAttribute") { cont = true; } } if (cont) { continue; } if (StorableTypes.Contains(ft)) { this.myFields.Add(fname); if (!myPersistentFields.ContainsKey(fname)) { myPersistentFields.Add(fname, fi); } } else if (ft.IsValueType) { AddValueType(fi); } else if (ft.IsClass) { AddEmbeddedType(fi); } // Alle anderen Fälle werden ignoriert } // Pro Klasse werden die Strings sortiert // Sortiert wird ohne Länderberücksichtigung, sonst sortiert die // Anwendung auf norwegischen Systemen anders als auf deutschen. if (myFields.Count - startind > 0) { FieldSorter fs = new FieldSorter(); myFields.Sort(startind, myFields.Count - startind, fs); } }