泛型函数f<T>(T dt).调用前只知道参数dt,是object类型的。
除了用if语句判断后多次调用,或者类似的方法。能不能一句搞定,类似f<typeof(dt)>(dt).这个type就是dt的类型。
因为函数中有需要根据T的属性名称取值处理,所以不能直接用object。
------解决思路----------------------
可以,但是没这样输入就没什么意义了。
你可以看看下面的用法,不太清楚你的具体需求:
static void Main(string[] args)
{
Student stu = new Student();
Say(stu);//I'm student.
Teacher tea = new Teacher();
Say(tea);//I'm teacher.
Say<Student>();//I'm student.
Say<Teacher>();//I'm teacher.
}
static void Say(dynamic obj)
{
obj.Say();
}
static void Say<T>()
{
dynamic obj = Activator.CreateInstance(typeof(T));
obj.Say();
}
struct Student
{
public void Say()
{
Console.WriteLine("I'm student.");
}
}
class Teacher
{
public void Say()
{
Console.WriteLine("I'm teacher.");
}
}
------解决思路----------------------
反射
------解决思路----------------------
泛型其实是设计时概念,任何把泛型用在运行时的设计都是错误的。
------解决思路----------------------
可能是楼主你的问题表述有问题,你是不是想问这个给定的泛型方法能否通过反射去掉用啊。给你一段示例代码,也许是你想要的:
typeof(class).GetMethoc("f").MakeGenericMethod(dt.GetType()).Invoke(null,new Ojbect[]{dt});