数组对象到泛型列表<>;

本文关键字:lt gt 列表 对象 泛型 数组 | 更新日期: 2023-09-27 18:24:35

我需要有来自数组对象的List<>对象。问题是,默认情况下,我不知道我的通用项的类型。

public override bool Get<T>(string key, out T value)
{   
   var cachedValue = <SOME OBJECT FROM SOMEWHERE OUT OF SPACE>;
   if (cachedValue is Array)
   {
      IEnumerable<object> collection = (IEnumerable<object>)cachedValue;
      var item = collection.ToList()[0];
      Type type = item.GetType();
      value =  (T)(Activator.CreateInstance(typeof(type),collection));
   } 
   else
   {
      ...
   }

这个片段是这样的。。。但我也有一个例外

"找不到类型上的构造函数"

无论如何,我已经将Array对象的值paramater设置为List<>任何帮助都会很棒。

数组对象到泛型列表<>;

如果传递给激活器的Type是正确的,那么传递给Activator(作为类型)的类应该具有:

  • 公共构造函数
  • 它接受一个参数:IEnumerable<object>

您可以这样做,假设您将T作为泛型类型传递,则列表包括:

if (cachedValue is Array)
{
  value = ((Array)cachedValue).Cast<T>.ToList();
} 

但在这种情况下,您的方法签名必须是:

public override bool Get<T>(string key, out List<T> value)

如果您将List<type>作为T传递,那么您将需要更多的工作(您需要检查T是否是一个泛型列表,然后从列表中提取实际类型)。