Я не нашел ответа на форуме (однако, если он есть, сообщите мне). Я пишу бэкэнд-структуру для приложения ASP.NET MVC, и у меня возникают проблемы с C # case.
Мне интересно, возможно ли такое решение (и мне нужно сделать следующее, как я описал или аналогично).
Я покажу проблему в примере ниже, потому что я не знаю, как четко выразить это словами.
Я определил Enum следующим образом:
public enum myEnum
{
FirstOpt = 0,
SecondOpt= 1,
ThirdOpt = 2,
Unknown = -1,
}
Теперь я хочу назначить myEnum в другой части моего решения в пользовательском атрибуте.
Атрибут выглядит следующим образом:
public class SearchTypeAttribute : Attribute
{
public Type SType { get; set; }
public IEnumerable<object> SItems { get; set; }
}
Тогда я хочу использовать его следующим образом:
public class SomeClass
{
[Key]
public long Id { get; set; }
[SearchTypeAttribute(
SType = typeof(Enums.myEnum),
SItems = Enum.GetValues(typeof(Enums.myEnum))
)]
public string Type{ get; set; } // later to this item will be assigned string name of the assigned value
}
Когда я это делаю, появляется следующая ошибка:
Ошибка CS0655 «SItems» не является допустимым аргументом именованного атрибута, поскольку он не является допустимым типом параметра атрибута
Я также пытался присвоить его как здесь:
public class SomeClass
{
[Key]
public long Id { get; set; }
[SearchTypeAttribute(
SType = typeof(Enums.myEnum),
SItems = Enums.myEnum // here !
)]
public string Type{ get; set; }
}
Но я до сих пор не знаю, какой «тип» свойства я должен использовать в своем SearchTypeAttribute, чтобы иметь возможность назначать эти значения там.
Я делаю это, чтобы иметь возможность генерировать различные типы полей в панелях поиска в представлениях позже.
Затем в моем коде я хочу назначить список значений перечисления или конкретное перечисление некоторой переменной, чтобы я мог затем работать с этими значениями.
Какие типы я должен использовать для назначения этого типа данных SItems ?
Есть ли другой подход, чтобы сделать это?
Я еще не очень продвинут в C #. Спасибо за любую помощь заранее.