Esempio n. 1
0
        private IEnumerable <PropertyOfEntity> ExtractPropertiesBaseOnType(Type typeOfEntity, object entity)
        {
            var propertiesInfo = new List <PropertyInfo>(typeOfEntity.GetProperties());

            foreach (var prop in propertiesInfo)
            {
                var propertyOfEntity = new PropertyOfEntity(prop.Name, prop.PropertyType, entity == null ? null : prop.GetValue(entity), prop);

                if (_determineThatPropertyIsUserDefined.PropertyIsUserDefined(propertyOfEntity.PropertyFullInfo))
                {
                    foreach (PropertyOfEntity innerProperty in ExtractPropertiesBaseOnType(propertyOfEntity.PropertyType, propertyOfEntity.PropertyValue))
                    {
                        yield return(innerProperty);
                    }
                }
                yield return(propertyOfEntity);
            }
        }
Esempio n. 2
0
        public void ExtractPropertiesForType_Check_That_Every_Property_Without_User_Defiend_One_Is_Collected()
        {
            var firstExpectedProperty = new PropertyOfEntity()
            {
                PropertyName = "Typ14", PropertyType = typeof(Type)
            };
            var secondExpectedProperty = new PropertyOfEntity()
            {
                PropertyName = "Lista", PropertyType = typeof(List <string>)
            };

            var returnedProperties = _extractProperties.ExtractPropertiesForType <SampleEntity3>();

            var returnedPropertiesAsArray = returnedProperties.Properties.ToArray();

            Assert.That(returnedPropertiesAsArray[0].PropertyName, Is.EqualTo(firstExpectedProperty.PropertyName));
            Assert.That(returnedPropertiesAsArray[0].PropertyType, Is.EqualTo(firstExpectedProperty.PropertyType));
            Assert.That(returnedPropertiesAsArray[1].PropertyName, Is.EqualTo(secondExpectedProperty.PropertyName));
            Assert.That(returnedPropertiesAsArray[1].PropertyType, Is.EqualTo(secondExpectedProperty.PropertyType));
        }
Esempio n. 3
0
        public void ExtractPropertiesForType_Check_That_Properties_Are_Collected_With_Child_Propertiies()
        {
            var sampleEntity2Int = new PropertyOfEntity()
            {
                PropertyName = "Int13", PropertyType = typeof(int)
            };
            var sampleEntity2String = new PropertyOfEntity()
            {
                PropertyName = "String13", PropertyType = typeof(string)
            };
            var sampleEntity2SampleEntity3 = new PropertyOfEntity()
            {
                PropertyName = "Sample3", PropertyType = typeof(SampleEntity3)
            };

            var sampleEntity3Type = new PropertyOfEntity()
            {
                PropertyName = "Typ14", PropertyType = typeof(Type)
            };
            var sampleEntity3List = new PropertyOfEntity()
            {
                PropertyName = "Lista", PropertyType = typeof(List <string>)
            };

            var returnedProperties = _extractProperties.ExtractPropertiesForType <SampleEntity2>();

            var returnedPropertiesAsArray = returnedProperties.Properties.ToArray();

            Assert.That(returnedPropertiesAsArray[0].PropertyName, Is.EqualTo(sampleEntity2Int.PropertyName));
            Assert.That(returnedPropertiesAsArray[0].PropertyType, Is.EqualTo(sampleEntity2Int.PropertyType));
            Assert.That(returnedPropertiesAsArray[1].PropertyName, Is.EqualTo(sampleEntity2String.PropertyName));
            Assert.That(returnedPropertiesAsArray[1].PropertyType, Is.EqualTo(sampleEntity2String.PropertyType));
            Assert.That(returnedPropertiesAsArray[2].PropertyName, Is.EqualTo(sampleEntity3Type.PropertyName));
            Assert.That(returnedPropertiesAsArray[2].PropertyType, Is.EqualTo(sampleEntity3Type.PropertyType));
            Assert.That(returnedPropertiesAsArray[3].PropertyName, Is.EqualTo(sampleEntity3List.PropertyName));
            Assert.That(returnedPropertiesAsArray[3].PropertyType, Is.EqualTo(sampleEntity3List.PropertyType));
            Assert.That(returnedPropertiesAsArray[4].PropertyName, Is.EqualTo(sampleEntity2SampleEntity3.PropertyName));
            Assert.That(returnedPropertiesAsArray[4].PropertyType, Is.EqualTo(sampleEntity2SampleEntity3.PropertyType));
        }