C# 使用作为泛型类型发送的对象
我有一个接收泛型类型的方法C# 使用作为泛型类型发送的对象,c#,.net,generics,filehelpers,C#,.net,Generics,Filehelpers,我有一个接收泛型类型的方法 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);
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;
}
公共字符串GetObject(IEnumerable obj)
{
//类型t=类型(t);
//类型t=obj.GetType();
//var t=(t)Activator.CreateInstance(typeof(t),新对象[]{obj});
var输出=fh.写入限制(t);
返回输出;
}
我想访问作为泛型类型接收的此对象,以便将其用作的WriteString
方法的参数。上面的注释行都不起作用,如果我试图使用前三个注释行中的任何一个方法生成的t
变量,我会得到一个错误
参数System.Type不可分配给参数类型
Systems.Collections.Generic.IEnumerable
如何获取要在WriteString
方法中使用的对象
编辑
如果我显得含糊不清,我深表歉意:)我实际上希望传递给FileHelperEngine使用的方法的值。我不确定是否有任何注释行是正确的,或者是将实际对象发送到泛型类型的理想方式。我所希望的就是能够将参数中接收到的值作为obj发送给FileHelperEngine,这基本上就是将这个IEnumerable obj发送给WriteString方法。错误消息非常清楚,不是
类型
对象。您需要传递IEnumerable
实例:
但请再次参阅OP的代码。似乎OP并没有试图给出
obj
,但是使用反射创建的实例,其中整个t
类型有一个单参数构造函数,接受整个IEnumerable
。@Matíasfidemrazier我想OP是混淆了:)这正是我的观点,我放弃了我的答案,因为你的答案似乎是对的。顺便说一句,我不明白为什么OP没有尝试直接将obj
交给WriteString
,看看会发生什么……有时我觉得人们认为写一行代码可能会产生原子爆炸,吞噬整个宇宙,同时按下“构建解决方案”或“构建”按钮选项只会提示您继续前进,避免浪费时间问无用的问题:D@netniVOP既有一个类泛型参数T
,也有一个方法argumet泛型参数。这就是问题的根源
public string GetObject<T>(IEnumerable<T> obj)
{
return fh.WriteString(obj);
}
public class F<T> where T : class
{
private FileHelperEngine<T> fh = new FileHelperEngine<T>();
public string GetObject(IEnumerable<T> obj)
{
return fh.WriteString(obj);
}
}