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

时间:2015-09-11 15:38:44

标签: c# abstract-class generic-list

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

通用抽象类:

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

继承类:

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

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

使用继承类的方法示例:

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

1 个答案:

答案 0 :(得分:1)

如果列表的类型与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;
    }
}