我有以下方法:
public void SetList<T>(IList<T> listINeedToStore)
{
//Store the list in instance level scope
}
我想取listINeedToStore
参数并将其存储在一个私有变量中,但我找不到方法。我试着做一些类似private IList<object> _tempVariable;
的事情,然后将_tempVariable
设置为listINeedToStore
变量,这样我以后就可以使用它来删除或添加项目。我会将列表设置为类似_tempVariable = (IList<object>)listINeedToStore;
。这不起作用,也不会编译。我应该注意的是,T是Enum的一种类型。
我确信有办法做到这一点,但我不知道。
谢谢,
基本上,如果不使类型成为泛型而不是方法,就无法以泛型的方式进行操作。您可以存储引用,但它必须通过非泛型类型的字段,例如IEnumerable
,甚至只是object
。要真正使用该列表,您必须使用泛型方法再次获取它,然后进行强制转换。例如:
private object list;
public void SetList<T>(IList<T> list)
{
this.list = list;
}
public List<T> GetList<T>()
{
return (List<T>) list;
}
当然,如果指定了错误的类型参数,那么在执行时获取将失败。
如果可能的话,我会尽量避免这种设计,但如果你真的需要这样做,它会起作用的。它只会给所有调用者增加正确类型的负担。
请注意,如果将参数从IList<T>
更改为List<T>
,则可以将其存储在IList
(非泛型)中,这可能会稍微有用一些,但这当然会限制您可以调用该方法的情况。