public Dictionary<string, MemberMetadata> GetFields(Type type)
{
Argument.IsNotNull("type", type);
return _fieldsCache.GetFromCacheOrFetch(type, () =>
{
var dictionary = new Dictionary<string, MemberMetadata>();
var fields = type.GetFieldsEx();
foreach (var fieldInfo in fields)
{
if (fieldInfo.Name.Contains("__BackingField") ||
fieldInfo.DeclaringType == typeof (ModelBase))
{
continue;
}
var memberMetadata = new MemberMetadata(type, fieldInfo.FieldType, SerializationMemberGroup.Field, fieldInfo.Name)
{
Tag = fieldInfo
};
var nameOverride = GetNameOverrideForSerialization(fieldInfo);
if (!string.IsNullOrWhiteSpace(nameOverride))
{
memberMetadata.MemberNameForSerialization = nameOverride;
}
dictionary[fieldInfo.Name] = memberMetadata;
}
return dictionary;
});
}