繁体   English   中英

如何传递通用对象列表?

[英]How to pass in a list of generic Objects?

我有以下对象:

public class ExpenseFilters<T> {
    public ExpenseFilterType Type {get;set;}
    public T Value {get;set;}
}

在这种情况下,T可以是字符串,整数,十进制。

我想创建一个接受ExpenseFilters通用列表的方法:

public void DoSomething(List<ExpenseFilters<T>> filterList) {}

这有可能吗?

编辑:道歉,因为我不够清楚。

我希望不要将ExpenseFilters列表限制为一种通用类型。

例如,列表应包含

ExpenseFilters<int> 

以及

ExpenseFilters<string>

这可能吗?

使方法通用:

public void DoSomething<T>(List<ExpenseFilters<T>> filterList) { }

使用此方法时,编译器通常可以推断类型参数T ,因此您甚至无需指定它:

List<ExpenseFilters<int>> list = new List<ExpenseFilters<int>>();
DoSomething(list);

编辑

事实证明这不是您想要的。

使用泛型是不可能的。 您可能要做的最接近的事情是创建一个由泛型接口实现/继承的非泛型接口或基类。

public interface IExpenseFilters
{
    ExpenseFilterType Type { get; set; }
    object Value { get; set; }
}

public class ExpenseFilters<T> : IExpenseFilters
{
    public ExpenseFilterType Type { get; set; }
    public T Value { get; set; }

    object IExpenseFilters.Value
    {
        get { return Value; }
        set
        {
            if (!(value is T))
                throw new ArgumentException("Incorrect type", "value");
            Value = (T)value;
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM