Exemple #1
0
            public void CorrectlyRegistersProperties()
            {
                var catelTypeInfo = new CatelTypeInfo(typeof(JohnDoe));

                Assert.IsNotNull(catelTypeInfo.GetPropertyData("FirstName"));
                Assert.IsNotNull(catelTypeInfo.GetPropertyData("LastName"));
            }
Exemple #2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="SerializationModelInfo"/> class.
        /// </summary>
        /// <param name="modelType">Type of the model.</param>
        /// <param name="catelProperties">The catel properties.</param>
        /// <param name="fields">The fields.</param>
        /// <param name="regularProperties">The properties.</param>
        public SerializationModelInfo(Type modelType, Dictionary <string, MemberMetadata> catelProperties, Dictionary <string, MemberMetadata> fields,
                                      Dictionary <string, MemberMetadata> regularProperties)
        {
            Argument.IsNotNull("modelType", modelType);
            Argument.IsNotNull("catelProperties", catelProperties);
            Argument.IsNotNull("fields", fields);
            Argument.IsNotNull("properties", regularProperties);

            ModelType = modelType;

            CatelTypeInfo catelTypeInfo = null;

            CatelPropertyNames    = new HashSet <string>(catelProperties.Keys);
            CatelProperties       = new List <PropertyData>();
            CatelPropertiesByName = catelProperties;
            foreach (var catelProperty in catelProperties)
            {
                var propertyData = catelProperty.Value.Tag as PropertyData;
                if (propertyData == null)
                {
                    if (catelTypeInfo == null)
                    {
                        catelTypeInfo = PropertyDataManager.Default.GetCatelTypeInfo(modelType);
                    }

                    propertyData = catelTypeInfo.GetPropertyData(catelProperty.Key);
                }

                CatelProperties.Add(propertyData);
            }

            FieldNames   = new HashSet <string>(fields.Keys);
            Fields       = new List <FieldInfo>();
            FieldsByName = fields;
            foreach (var field in fields)
            {
                var fieldInfo = field.Value.Tag as FieldInfo;
                if (fieldInfo == null)
                {
                    fieldInfo = modelType.GetFieldEx(field.Key);
                }

                Fields.Add(fieldInfo);
            }

            PropertyNames    = new HashSet <string>(regularProperties.Keys);
            Properties       = new List <PropertyInfo>();
            PropertiesByName = regularProperties;
            foreach (var regularProperty in regularProperties)
            {
                var propertyInfo = regularProperty.Value.Tag as PropertyInfo;
                if (propertyInfo == null)
                {
                    propertyInfo = modelType.GetPropertyEx(regularProperty.Key);
                }

                Properties.Add(propertyInfo);
            }
        }