读书人

泛型方法,怎么拿到T实例的属性

发布时间: 2012-06-09 17:16:42 作者: rapoo

泛型方法,如何拿到T实例的属性?
public class class1
{
public static void FillTD<T>(T obj)
{
class2 c2=new class2();
c2.name=obj.name;//?此时应该怎样写,才拿到T实例的name属性?

}

}
求帮助,多谢!

[解决办法]
你可以定义一个接口

C# code
interface IName{    string name { get; set; }}
[解决办法]
用反射

C# code
PropertyInfo p = obj.GetType().GetProperty("Name");c2.name=(String/*类型转换*/)p.GetValue(obj.GetValue());
[解决办法]
反射最灵活.
[解决办法]
1,如果你需要保证T一定有Name属性,那么就用接口。
2,如果你不需要T一定有Name属性,那么就用反射。
[解决办法]
如果选择 .net 4.0 框架,还可以这样
C# code
public static void FillTD<T>(T obj){    class2 c2 = new class2();    dynamic d = obj;    c2.name = d.name;} 

读书人网 >C#

热点推荐