Пример #1
0
 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);
     }
 }
Пример #2
0
        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);
        }
Пример #3
0
 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);
         }
     }
 }
Пример #4
0
        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));
 }
Пример #8
0
 public void CodeFields(Type type, int version, IFieldCodeable obj)
 {
     throw new NotImplementedException();
 }