[英]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.