Exemplo n.º 1
0
        private void SetProperties(Type type)
        {
            foreach (PropertyInfo property in Properties)
            {
                ManagedProperties.Add(property.Name, property);
                FilteredProperties.Add(property.Name, property);
                foreach (CustomAttributeData attribute in property.CustomAttributes)
                {
                    switch (attribute.AttributeType.Name)
                    {
                    case nameof(UnmanagedProperty):
                        UnmanagedProperties.Add(property.Name, property);
                        ManagedProperties.Remove(property.Name);
                        FilteredProperties.Remove(property.Name);
                        break;

                    case nameof(AutoProperty):
                        AutoProperties.Add(property.Name, property);
                        AutoPropertyAttributes.Add(property.Name, property.GetCustomAttribute <AutoProperty>());
                        FilteredProperties.Remove(property.Name);
                        break;

                    case nameof(PrimaryKey):
                        PrimaryKeyProperty = property;
                        break;

                    case nameof(DateCreated):
                        DateCreatedProperty = property;
                        AutoProperties.Add(property.Name, property);
                        AutoPropertyAttributes.Add(property.Name, new AutoProperty(AutoPropertyTypes.DateTime));
                        FilteredProperties.Remove(property.Name);
                        break;

                    case nameof(DateModified):
                        DateModifiedProperty = property;
                        AutoProperties.Add(property.Name, property);
                        AutoPropertyAttributes.Add(property.Name, new AutoProperty(AutoPropertyTypes.DateTime));
                        FilteredProperties.Remove(property.Name);
                        break;

                    case nameof(ForeignKey):
                        ForeignKeyProperties.Add(property.Name, property);
                        ForeignKeyAttributes.Add(property.Name, property.GetCustomAttribute <ForeignKey>());
                        break;

                    case nameof(Unique):
                        UniqueKeyProperties.Add(property.Name, property);
                        break;

                    case nameof(Default):
                        DefaultProperties.Add(property.Name, property);
                        DefaultAttributes.Add(property.Name, property.GetCustomAttribute <Default>());
                        break;

                    case nameof(DataLength):
                        DataLengthProperties.Add(property.Name, property);
                        DataLengthAttributes.Add(property.Name, property.GetCustomAttribute <DataLength>());
                        break;

                    case nameof(ForeignData):
                        ForeignDataProperties.Add(property.Name, property);
                        ForeignDataAttributes.Add(property.Name, ConfigureForeignDataAttribute(property.GetCustomAttribute <ForeignData>(), property));
                        ManagedProperties.Remove(property.Name);
                        FilteredProperties.Remove(property.Name);
                        break;

                    default:
                        break;
                    }
                }
            }
            PerformPropertiesValidation(type);
        }