public void CodeFields(Type type, int version, IFieldCodeable obj) { FieldCoder[] fca = FieldCoderArray.Get(c_coderVersion, type, version, obj); foreach (var fc in fca) { var element = new XElement(fc.Name); m_elementStack.Push(m_element); m_element = element; fc.Code(this, obj); m_element = m_elementStack.Pop(); AddValue(element); } }
public static FieldCoder[] Get(int coderVersion, Type type, int version, IFieldCodeable fieldCodeAble) { var key = Tup.Create(coderVersion, type, version); FieldCoder[] fieldCoderArray; lock (s_lock) { if (!s_fieldCoderArrayMap.TryGetValue(key, out fieldCoderArray)) { fieldCoderArray = fieldCodeAble.GetFieldCoders(coderVersion) .OrderBy(fc => fc.Order) .Where(fc => fc.MinVersion <= version && version <= fc.MaxVersion) .ToArray(); s_fieldCoderArrayMap[key] = fieldCoderArray; } } return(fieldCoderArray); }
public void CodeFields(Type type, int version, IFieldCodeable obj) { FieldCoder[] fca = FieldCoderArray.Get(c_coderVersion, type, version, obj); if ((m_debugMode & CoderDebugMode.ReportFields) == 0) { foreach (var fc in fca) { fc.Code(this, obj); } } else { foreach (var fc in fca) { Report.Line(" {0}", fc.Name); fc.Code(this, obj); } } }
public static FieldCoderMap Get(int coderVersion, Type type, int version, IFieldCodeable fieldCodeAble) { var key = Tup.Create(coderVersion, type, version); FieldCoderMap fieldCoderMap; lock (s_lock) { if (!s_fieldCoderMapMap.TryGetValue(key, out fieldCoderMap)) { fieldCoderMap = new FieldCoderMap(); var fieldCoders = fieldCodeAble.GetFieldCoders(coderVersion) .Where(fc => fc.MinVersion <= version && version <= fc.MaxVersion); foreach (var fc in fieldCoders) { fieldCoderMap[fc.Name] = fc.Code; } s_fieldCoderMapMap[key] = fieldCoderMap; } } return(fieldCoderMap); }
public static FieldCoder CreateFieldCoder(this IFieldCodeable self, string name, string memberName) { return(CreateFieldCoder(self.GetType(), name, memberName)); }
public static FieldCoder CreateFieldCoder(this IFieldCodeable self, string member) { return(CreateFieldCoder(self, member, member)); }
public static IEnumerable <FieldCoder> CreateFieldCoders(this IFieldCodeable self, params string[] members) { return(CreateFieldCoders(self.GetType(), members)); }
public void CodeFields(Type type, int version, IFieldCodeable obj) { throw new NotImplementedException(); }