Ejemplo n.º 1
0
        public void NullabilityModeTest(string expectedFileName, NullabilityMode mode)
        {
            var generatedCode = GenerateCode(new TypeScriptGenerationOptions {
                NullabilityMode = mode
            }, CustomTypeGenerator.Null, typeof(NullabilityModeRootType)).Single();
            var expectedCode = GetExpectedCode($"Options/{expectedFileName}");

            generatedCode.Diff(expectedCode).ShouldBeEmpty();
        }
Ejemplo n.º 2
0
        public void CustomGeneratorWithMethodsTest(Type rootType, NullabilityMode nullabilityMode, string expectedFileName)
        {
            var options = TypeScriptGenerationOptions.Default;

            options.NullabilityMode             = nullabilityMode;
            var(customGenerator, typesProvider) = GetCustomization <TTypesProvider>(typeof(TestCustomTypeGenerator), rootType);
            var generatedCode = GenerateCode(options, customGenerator, typesProvider).Single();
            var expectedCode  = GetExpectedCode($"CustomGenerator/{expectedFileName}");

            generatedCode.Diff(expectedCode).ShouldBeEmpty();
        }
        public bool CanBeNull(NullabilityMode nullabilityMode)
        {
            if (nullabilityMode == NullabilityMode.None)
            {
                return(false);
            }

            var nullableByte = NullableInfo?[0] ?? NullableContext ?? 0;

            if (nullabilityMode == NullabilityMode.NullableReference ||
                nullabilityMode.HasFlag(NullabilityMode.NullableReference) && nullableByte != 0)
            {
                return(nullableByte == 2);
            }

            return(nullabilityMode.HasFlag(NullabilityMode.Pessimistic) ? !HasNotNull : HasCanBeNull);
        }
        public static (bool, Type) ProcessNullable(ICustomAttributeProvider attributeContainer, Type type, NullabilityMode nullabilityMode)
        {
            if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable <>))
            {
                var underlyingType = type.GetGenericArguments()[0];
                return(true, underlyingType);
            }

            if (attributeContainer == null || !type.IsClass && !type.IsInterface)
            {
                return(false, type);
            }

            return(CanBeNull(attributeContainer, nullabilityMode), type);
        }
Ejemplo n.º 5
0
 public bool CanBeNull(NullabilityMode nullabilityMode)
 {
     return(!this.NeverNull() && NullabilityInfo.CanBeNull(nullabilityMode));
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Marca una propiedad de forma explícita con el modo de nulabilidad a
 /// utilizar para generar el control de edición en la página de Crud.
 /// </summary>
 /// <typeparam name="TModel">Tipo de modelo descrito.</typeparam>
 /// <typeparam name="TProperty">
 /// Información de tipo devuelto por la propiedad descrita.
 /// </typeparam>
 /// <typeparam name="TViewModel">Tipo de ViewModel editor.</typeparam>
 /// <param name="descriptor">
 /// Instancia de descriptor de propiedad sobre la cual aplicar la
 /// configuración.
 /// </param>
 /// <param name="mode">
 /// Modo de nulabilidad a utilizar para generar el control de edición
 /// en la página de Crud.
 /// </param>
 /// <returns>
 /// La misma instancia que <paramref name="descriptor"/>, permitiendo
 /// el uso de sintaxis Fluent.
 /// </returns>
 public static IPropertyDescriptor <TModel, TProperty, TViewModel> NullMode <TModel, TProperty, TViewModel>(this IPropertyDescriptor <TModel, TProperty, TViewModel> descriptor, NullabilityMode mode) where TModel : Model where TProperty : class where TViewModel : ViewModel <TModel>
 {
     return(descriptor.SetCustomConfigurationValue(GetGuid(), mode));
 }