private bool IsStrongTypeId(IPropertyInspector propertyInspector)
        {
            var systemType = propertyInspector.Type.GetUnderlyingSystemType();

            if (systemType is null)
            {
                return(false);
            }

            return(StrongTypeIdHelper.IsStrongTypeId(systemType));
        }
        public static IRequestExecutorBuilder BindStrongTypeInAssembly(this IRequestExecutorBuilder builder, Assembly assembly)
        {
            foreach (var type in assembly.GetTypes())
            {
                if (StrongTypeIdHelper.IsStrongTypeId(type))
                {
                    var graphType = StrongTypeIdGraphType.MakeType(type);
                    builder.BindRuntimeType(type, graphType);
                }
            }

            return(builder);
        }
Beispiel #3
0
        public override JsonConverter CreateConverter(Type typeToConvert, JsonSerializerOptions options)
        {
            StrongTypeIdHelper.IsStrongTypeId(typeToConvert, out var idType);
            var strongType = typeof(StrongTypeIdConverterInner <>)
                             .MakeGenericType(new Type[] { idType });


            JsonConverter converter = (JsonConverter)Activator.CreateInstance(
                strongType,
                BindingFlags.Instance | BindingFlags.Public,
                binder: null,
                args: new object[] { options },
                culture: null);

            return(converter);
        }
        public void Apply(IIdentityInstance instance)
        {
            var systemType = instance.Type.GetUnderlyingSystemType();

            if (systemType is null)
            {
                return;
            }

            var isStrongType = StrongTypeIdHelper.IsStrongTypeId(systemType);

            if (isStrongType)
            {
                var customType = typeof(NHStrongTypeIdUserType <>).MakeGenericType(systemType);
                instance.CustomType(customType);
            }
        }
Beispiel #5
0
        public void ProcessPropertyAdded(IConventionPropertyBuilder propertyBuilder, IConventionContext <IConventionPropertyBuilder> context)
        {
            if (propertyBuilder.Metadata.ClrType is null)
            {
                return;
            }
            Type idType;
            var  isStrongTypeId = StrongTypeIdHelper.IsStrongTypeId(propertyBuilder.Metadata.ClrType, out idType);

            if (!isStrongTypeId)
            {
                return;
            }

            var valueConverter = CreateValueConverter(propertyBuilder.Metadata.ClrType, idType);

            propertyBuilder.HasConversion(valueConverter);
        }
Beispiel #6
0
        public void ProcessEntityTypeAdded(IConventionEntityTypeBuilder entityTypeBuilder, IConventionContext <IConventionEntityTypeBuilder> context)
        {
            if (entityTypeBuilder.Metadata.ClrType is null)
            {
                return;
            }

            var properties = entityTypeBuilder.Metadata.ClrType.GetProperties()
                             .Where(p => StrongTypeIdHelper.IsStrongTypeId(p.PropertyType))
                             .ToList();

            if (entityTypeBuilder.Metadata is IMutableEntityType entityType)
            {
                foreach (var property in properties)
                {
                    entityType.AddProperty(property.Name, property.PropertyType, property);
                }
            }
        }
Beispiel #7
0
 public override bool CanConvert(Type typeToConvert)
 {
     return(StrongTypeIdHelper.IsStrongTypeId(typeToConvert));
 }
 public override bool CanConvert(Type objectType)
 {
     return(StrongTypeIdHelper.IsStrongTypeId(objectType));
 }