У нас есть модель, которая передается с веб-страницы как json и использует построение модели в нашем контроллере для разрешения свойств на нашем сервере .Net Core 3.1. Мы хотим украсить некоторые свойства этой модели пользовательским атрибутом, чтобы «вспомогательный» метод мог выполнять преобразование указанного свойства в нашем контроллере.
Когда у нашей модели НЕТ атрибутов, все компилируется и работает нормально.
Мы создали класс для этой модели (LoginModel) и украсили свойство нашим пользовательским атрибутом [Courier].
namespace THO.Demo.API.Models
{
public class LoginModel
{
public string Email { get; set; }
[Courier(foo: "secret")]
public string Secret { get; set; }
[Courier]
public string PIN { get; set; }
}
}
Мы создали класс для пользовательского атрибута
namespace THO.Demo.API.Models
{
[AttributeUsage(AttributeTargets.Property)]
public class CourierAttribute : System.Attribute
{
private string foobar;
public CourierAttribute(string foo)
{
foobar = foo;
}
public CourierAttribute() { }
}
}
Когда я пытаюсь собрать наш проект, я получаю следующие ошибки:
Ошибка CS0246 Не удалось найти имя типа или пространства имен «CourierAttribute» (вы пропустили директиву использования или ссылку на сборку?)
а также
Ошибка CS0246 Не удалось найти тип или имя пространства имен «Курьер» (вам не хватает директивы использования или ссылки на сборку?)
Оба этих файла находятся «бок о бок» в одном проекте и в одном пространстве имен. Я попытался назвать атрибут «MyCustomAttribute» с той же проблемой. Когда (в VS2019) я нажимаю на атрибут, я вижу ссылку и могу «перейти» к ней, поэтому кажется, что по крайней мере VS знает, что они там есть, но проект не скомпилируется.
Есть предположения? Спасибо.
.vs
скрытую папку, открыть Visual Studio, снова пересобрать проект. - person Didgeridoo   schedule 04.01.2020ReSharper → Options → General → Clear caches
. Затем снова откройте Visual Studio, очистите и перестройте решение. - person Didgeridoo   schedule 04.01.2020BuildAction
=C# compiler
? - person nvoigt   schedule 06.01.2020