我有一个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
枚举,
public enum Position
{
[Display(Name = "Accountant")]
Accountant,
[Display(Name = "Chief Executive Officer (CEO)")]
ChiefExecutiveOfficer,
}
但是,我在SearchableEnumAttribute
构造函数的这一行中遇到了编译错误,
ExpressionProvider = new EnumSearchExpressionProvider<enumType>();
如何将Type
转换为TEnum
?我做的是不可能的事还是错的?有没有更好的方法来做到这一点?请帮帮我。
发布于 2019-10-17 10:02:11
类似于:
ExpressionProvider = (StringSearchExpressionProvider)Activator.CreateInstance(
typeof(EnumSearchExpressionProvider<>).MakeGenericType(enumType));
https://stackoverflow.com/questions/58429927
复制