private static void SetYapperColumnValues(Message message, ITableRow row) { PropertyInfo[] propertyInfoArray = message.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (PropertyInfo propInfo in propertyInfoArray) { IEnumerable <Attribute> attrs = propInfo.GetCustomAttributes(); if (attrs == null) { continue; } IColumn column = null; bool isDbColumn = false; bool isInBlob = false;; foreach (Attribute a in attrs) { if (a is YapperColumnAttribute && ((YapperColumnAttribute)a).ColumnLocation == ColumnLocation.Database) { isDbColumn = true; YapperColumnAttribute yapperColumn = a as YapperColumnAttribute; column = MessageTable.GetColumnFromName(yapperColumn.Name); } if (a is ProtoBuf.ProtoMemberAttribute) { isInBlob = true; } } if (column != null && isDbColumn && !isInBlob) { propInfo.SetValue(message, row.ColumnValues[column]); } } }