public class class1
{
  public static void FillTD<T>(T obj)
  {
      class2 c2=new class2();
      c2.name=obj.name;//?此时应该怎样写,才拿到T实例的name属性?   }}
求帮助,多谢!

解决方案 »

  1.   

    你可以定义一个接口
    interface IName
    {
        string name { get; set; }
    }
    让后在方法里指定
    public static void FillTD<T>(T obj) where T : IName
    {
      class2 c2=new class2();
      c2.name=obj.name;//?此时应该怎样写,才拿到T实例的name属性?
    }
    传入的 T 类型一定要继承于 IName 接口
      

  2.   

    调用此泛型方法时,我会给T传一个类对象,其中就包括Name属性,
    楼上说的,定义为接口,是一种方法,但目前我无法这样实现了.
      

  3.   

    用反射 PropertyInfo p = obj.GetType().GetProperty("Name");c2.name=(String/*类型转换*/)p.GetValue(obj.GetValue());
      

  4.   

    在线等.多谢pengcwl,avphoenixi.
    还有其他方法吗?
      

  5.   

    1,如果你需要保证T一定有Name属性,那么就用接口。
    2,如果你不需要T一定有Name属性,那么就用反射。
      

  6.   

    如果选择 .net 4.0 框架,还可以这样
    public static void FillTD<T>(T obj)
    {
        class2 c2 = new class2();
        dynamic d = obj;
        c2.name = d.name;
    }