使用作为泛型类型发送进来的对象
本文关键字:对象 泛型类型 | 更新日期: 2023-09-27 18:18:08
我有一个接收泛型类型的方法
public string GetObject<T>(IEnumerable<T> obj)
{
//Type t = typeof(T);
//Type t = obj.GetType();
//var t = (T)Activator.CreateInstance(typeof(T),new object[] {obj });
var output = fh.WriteString(t);
return output;
}
我想访问作为泛型类型接收的这个对象,这样我就可以将它用作FileHelperEngine
的WriteString
方法的参数。上面的注释行都不工作,如果我试图使用前三个注释行中任何一个方法生成的t
变量,我得到一个错误说
参数系统。Type不能赋值给参数类型
Systems.Collections.Generic.IEnumerable<T>
我如何得到要在WriteString
方法中使用的对象?
编辑如果我显得模糊,我的道歉:)我实际上希望传递给方法的值由FileHelperEngine使用。我不确定是否有任何注释行是正确的,或者是将实际对象发送到泛型类型的理想方法。我想要的只是能够将在参数中接收到的值作为FileHelperEngine所使用的obj发送,这基本上是将这个IEnumerable obj发送给WriteString方法。
错误消息非常清楚。方法签名接受IEnumerable<T>
对象,而不是Type
对象。您需要传递IEnumerable<T>
实例:
public string GetObject<T>(IEnumerable<T> obj)
{
return fh.WriteString(obj);
}
编辑:在查看了FileEngineHelper
类之后,我将假设您使用了非泛型FileEngineHelper
构造函数,它接受Type
对象而不是泛型类构造函数。当您使用非泛型类构造函数时,WriteString
将始终接受IEnumerable<object>
,而不是IEnumerable<T>
。
移动到通用版本,这是有效的:
public class F<T> where T : class
{
private FileHelperEngine<T> fh = new FileHelperEngine<T>();
public string GetObject(IEnumerable<T> obj)
{
return fh.WriteString(obj);
}
}