Catel.Runtime.Serialization.SerializationManager.GetFieldsToSerialize C# (CSharp) Метод

GetFieldsToSerialize() публичный Метод

Gets the fields to serialize for the specified object.
The is null.
public GetFieldsToSerialize ( Type type ) : MemberMetadata>.Dictionary
type System.Type The type.
Результат MemberMetadata>.Dictionary
        public virtual Dictionary<string, MemberMetadata> GetFieldsToSerialize(Type type)
        {
            Argument.IsNotNull("type", type);

            return _fieldsToSerializeCache.GetFromCacheOrFetch(type, () =>
            {
                var serializableMembers = new Dictionary<string, MemberMetadata>();

                var fields = GetFields(type);
                foreach (var typeField in fields)
                {
                    var memberMetadata = typeField.Value;
                    var fieldInfo = (FieldInfo)memberMetadata.Tag;

                    // Exclude fields by default
                    var include = false;

                    if (AttributeHelper.IsDecoratedWithAttribute<IncludeInSerializationAttribute>(fieldInfo))
                    {
                        include = true;
                    }

                    if (AttributeHelper.IsDecoratedWithAttribute<ExcludeFromSerializationAttribute>(fieldInfo))
                    {
                        include = false;
                    }

                    if (include)
                    {
                        serializableMembers.Add(typeField.Key, memberMetadata);
                    }
                }

                return serializableMembers;
            });
        }

Usage Example

Пример #1
0
            public void ReturnsCorrectFields()
            {
                var serializationManager = new SerializationManager();

                var fieldsToSerialize = serializationManager.GetFieldsToSerialize(typeof(TestModel)).ToArray();

                Assert.AreEqual(1, fieldsToSerialize.Length);
                Assert.AreEqual("_includedField", fieldsToSerialize[0]);
            }
All Usage Examples Of Catel.Runtime.Serialization.SerializationManager::GetFieldsToSerialize