c# 将不同类型的列表设置为对象

c# List of varying type set as object

我创建了一个通用搜索参数 class 以便在多个库中重复使用(见下文)。我试图找到一种更好的方法来实现每个参数的值列表。我会将参数列表传递给一个方法,但每个参数的值的类型不同。我已经将它实现为简单的类型对象,并将在我的代码中根据需要转换为正确的类型,但我觉得可能有更好的方法来做到这一点,我没有想出太多。有人做过类似的事情或有建议吗?谢谢!

通用摘要Class:

public class SearchParameter<T>
{
    public T Name { get; set; }
    public List<object> Values { get; set; }
}

继承Class:

public enum OrderSearchParameterNames
{
    Barcode,
    DateCompleted,
    DatePlaced,
    OrderStatus,
    UserId
}

public class OrderSearchParameter : SearchParameter<OrderSearchParameterNames>
{
    public OrderSearchParameter(OrderSearchParameterNames name, List<object> values)
    {
        Name = name;
        Values = values;
    }
}

使用继承的方法示例 class:

public ApiResponse<OrderWellplate, ApiResponseStatus> SearchOrders(int currentPageIndex, int pageSize, List<OrderSearchParameter> searchParameters, OrderSortParameter sortParameter, out int recordCount)

如果列表的类型与Name

的类型相同
public class SearchParameter<T>
{
    public T Name { get; set; }
    public List<T> Values { get; set; }
    public SearchParameter(T name, List<T> values)
    {
        Name = name;
        Values = values;
    }
}

如果列表的类型与Name

的类型不同
public class SearchParameter<TName, TValues>
{
    public TName Name { get; set; }
    public List<TValues> { get; set; }

    public SearchParameter(TName name, List<TValues> values)
    {
        Name = name;
        Values = values;
    }
}