void T GetProp<TEntity, T>(T entity, string propName) where T : xxx 这里的xxx 就就带有propName 的接口或父类的。
{
    return entity.propName();这里这么写肯定是不对的。请问怎么写?
}

解决方案 »

  1.   

    public class BaseT
    {
    public string Name{}
    }void T GetProp<TEntity, T>(T entity, string propName) where T : BaseT
    {
    return T.Name
    }
      

  2.   

    哪来的void T这写法…还有参数entity的类型应该是TEntity吧。想获得更有用的回答,需要把问题描述的更清晰和准确。
    想通过属性名字取属性值,是需要反射,但是这样无法在编译时自动推断T的类型,需要自己定义。这导致TEntity也没有意义。相当于
    T GetProp<T>(object entity, string propName)
    {
        return (T)entity.GetType().GetProperty(propName).GetValue(entity);
    }
    事实上如果你在编译时已经知道了TEntity的具体类型,那么肯定能直接写属性取值了。
      

  3.   

    添加引用 Microsoft.VisualBasic
    然后
    Microsoft.VisualBasic.Interaction.CallByName(entity, propName, CallType.Get)
      

  4.   

    要么就是反射获取   Type
    要么就是泛型约束   where: baseClass