У меня есть EnumSearchExpressionProvider<TEnum>
класс. Мне нужно назначить экземпляр этого класса внутри атрибута с именем SearchableEnumAttribute
.
Вот мой EnumSearchExpressionProvider<TEnum>
,
public class EnumSearchExpressionProvider<TEnum> : StringSearchExpressionProvider where TEnum : struct
{
public override ConstantExpression GetValue(string input)
{
if (!Enum.TryParse<TEnum>(input.Trim().Replace(" ", string.Empty), true, out var value))
{
throw new ArgumentException("Invalid search value.");
}
return Expression.Constant(value);
}
}
Вот мой класс SearchableEnumAttribute
,
[AttributeUsage(AttributeTargets.Property)]
public class SearchableEnumAttribute : SearchableAttribute
{
public SearchableEnumAttribute(Type enumType)
{
ExpressionProvider = new EnumSearchExpressionProvider<enumType>();
}
}
В моей модели я использую этот атрибут для одного из свойств, как,
[SearchableEnum(typeof(Position))]
public string Position { get; set; }
здесь мой Position
Enum,
public enum Position
{
[Display(Name = "Accountant")]
Accountant,
[Display(Name = "Chief Executive Officer (CEO)")]
ChiefExecutiveOfficer,
}
Однако яполучаю ошибку компиляции в этой строке в моем конструкторе SearchableEnumAttribute
,
ExpressionProvider = new EnumSearchExpressionProvider<enumType>();
Как преобразовать Type
в TEnum
? Я делаю что-то невозможное или неправильное? Есть ли лучший способ сделать это? Пожалуйста, помогите мне.