/// <summary> /// /// </summary> /// <param name="field"></param> /// <returns></returns> internal Func <TraceEvent, object> GetFieldAccessor(TraceEventFieldIndex field) { if (m_FieldAccessors.TryGetValue(field, out Func <TraceEvent, object> accessor)) { return(accessor); } else { return(GetUnknownFieldValue); } }
/// <summary> /// /// </summary> /// <param name="traceEvent"></param> /// <param name="field"></param> /// <returns></returns> public object GetFieldValue(TraceEvent traceEvent, TraceEventFieldIndex field) { if (m_FieldAccessors.TryGetValue(field, out Func <TraceEvent, object> accessor)) { return(accessor(traceEvent)); } else { return(null); } }
/// <summary> /// /// </summary> /// <param name="setting"></param> /// <param name="defaultWidth"></param> /// <returns></returns> internal static IDictionary <TraceEventFieldIndex, TraceEventField> GetAllFields(TraceEventListSetting setting, int defaultWidth) { TraceEventAccessor accessor = new TraceEventAccessor(setting); Array enumFields = Enum.GetValues(typeof(TraceEventFieldIndex)); Dictionary <TraceEventFieldIndex, TraceEventField> fields = new Dictionary <TraceEventFieldIndex, TraceEventField>(enumFields.Length); for (int i = 0; i < enumFields.Length; ++i) { TraceEventFieldIndex enumField = (TraceEventFieldIndex)enumFields.GetValue(i); fields.Add(enumField, new TraceEventField(enumField, defaultWidth, accessor)); } return(fields); }
/// <summary> /// /// </summary> /// <param name="index"></param> /// <param name="width"></param> /// <param name="accessor"></param> private TraceEventField(TraceEventFieldIndex index, int width, TraceEventAccessor accessor) { m_Index = index; m_Getter = accessor.GetFieldAccessor(index); m_Width = width; }