Итак, у меня есть настраиваемый атрибут, пусть его вызывает MyCustomAttribute
, у которого есть такой конструктор:
public MyCustomAttribute(int? i)
{
// Code goes here
}
и объявляет свойство:
public int? DefaultProperty { get; set; }
Теперь, если бы я хотел использовать свойство, мне нужно было бы передать int
или null
, ну, что бы я ожидал.
Но это дает ошибку компилятора:
[MyCustomAttribute(1, DefaultProperty = 1)]
public int? MyProperty { get; set; }
и так:
[MyCustomAttribute(null,DefaultProperty = null)]
public int? MyProperty { get; set; }
Ошибка: An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type
как для конструктора, так и для свойства.
Почему это? Если я сменим конструктор на захват int, я могу перейти в 0
, но не null
, который портит цель значения (которое иногда может быть нулевым)