Ejemplo n.º 1
0
        public virtual void Properties_can_have_field_cleared(PropertyBase propertyBase, PropertyInfo propertyInfo, string fieldName)
        {
            Assert.Null(propertyBase.GetFieldName());
            Assert.Null(propertyBase.FieldInfo);
            Assert.Same(propertyInfo, propertyBase.MemberInfo);

            propertyBase.SetField(fieldName, ConfigurationSource.Explicit);

            Assert.Equal(fieldName, propertyBase.GetFieldName());
            var fieldInfo = propertyBase.FieldInfo;

            Assert.Equal(fieldName, fieldInfo.Name);
            Assert.Same(propertyInfo ?? (MemberInfo)fieldInfo, propertyBase.MemberInfo);

            propertyBase.SetField(null, ConfigurationSource.Explicit);

            Assert.Null(propertyBase.GetFieldName());
            Assert.Null(propertyBase.FieldInfo);
            Assert.Same(propertyInfo, propertyBase.MemberInfo);

            propertyBase.SetFieldInfo(fieldInfo, ConfigurationSource.Explicit);

            Assert.Equal(fieldName, propertyBase.GetFieldName());
            Assert.Same(propertyInfo ?? (MemberInfo)fieldInfo, propertyBase.MemberInfo);

            propertyBase.SetFieldInfo(null, ConfigurationSource.Explicit);

            Assert.Null(propertyBase.GetFieldName());
            Assert.Null(propertyBase.FieldInfo);
            Assert.Same(propertyInfo, propertyBase.MemberInfo);
        }
 /// <summary>
 ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
 ///     directly from your code. This API may change or be removed in future releases.
 /// </summary>
 protected virtual void Apply([NotNull] PropertyBase propertyBase)
 {
     if (ConfigurationSource.Convention.Overrides(propertyBase.GetFieldInfoConfigurationSource()))
     {
         foreach (var type in propertyBase.DeclaringType.ClrType.GetTypesInHierarchy().ToList())
         {
             var fieldInfo = TryMatchFieldName(type, propertyBase.ClrType, propertyBase.Name);
             if (fieldInfo != null)
             {
                 propertyBase.SetFieldInfo(fieldInfo, ConfigurationSource.Convention, runConventions: false);
                 return;
             }
         }
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 ///     This API supports the Entity Framework Core infrastructure and is not intended to be used
 ///     directly from your code. This API may change or be removed in future releases.
 /// </summary>
 protected virtual void Apply([NotNull] PropertyBase propertyBase)
 {
     if (ConfigurationSource.Convention.Overrides(propertyBase.GetFieldInfoConfigurationSource()))
     {
         var type = propertyBase.DeclaringType.ClrType;
         while (type != null)
         {
             var fieldInfo = TryMatchFieldName(type, propertyBase.ClrType, propertyBase.Name);
             if (fieldInfo != null)
             {
                 propertyBase.SetFieldInfo(fieldInfo, ConfigurationSource.Convention);
                 return;
             }
             type = type.GetTypeInfo().BaseType;
         }
     }
 }