Así que tienen un atributo personalizado, vamos a llamarlo MyCustomAttribute
, que tiene un constructor de este modo:int anulable en Atributo Constructor o propiedad
public MyCustomAttribute(int? i)
{
// Code goes here
}
y declara una propiedad:
public int? DefaultProperty { get; set; }
Ahora bien, si Quería usar la propiedad, necesitaría pasar un int
o null
, bueno, eso es lo que esperaría.
Pero esto da un error del compilador:
[MyCustomAttribute(1, DefaultProperty = 1)]
public int? MyProperty { get; set; }
y lo mismo ocurre esto:
[MyCustomAttribute(null,DefaultProperty = null)]
public int? MyProperty { get; set; }
El error es: An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type
tanto para el constructor y la propiedad.
¿Por qué es esto? Si cambio el constructor para tomar un int, me puede pasar en 0
, pero no null
, qué tipo de derrota el propósito del valor (que a veces puede ser nulo)
¿Dónde está la enumeración que menciona en el título? (A nullable int no es una enumeración.) – dtb
Puede proporcionar dos constructores: uno con un parámetro int y otro sin ningún parámetro. – dtb
Sí, lo siento, alum fue al principio, resulta que es el nullable int – PostMan