数组对象到泛型列表<>;
本文关键字: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
是否是一个泛型列表,然后从列表中提取实际类型)。