**前言我对仿制药很新。我有一个名为Geno的课程。我的Peno类只包含一个字符串Name属性。我想知道为什么我不能在这个类的方法中调用T.Name。我如何访问T上的属性?关于它是如何工作的任何好资源?
public class Geno<T> where T : Peno
{
}
public string GetName()
{
return T.Name;
}
答案 0 :(得分:4)
您的Name
属性是实例属性还是静态属性?如果它是静态属性,则无论如何都不会获得多态性 - 您只需调用Peno.Name
。
如果它是一个实例属性,则需要一个实例来调用它。例如:
public class Geno<T> where T : Peno
{
private readonly T value;
public Geno(T value)
{
this.value = value;
}
public string GetName()
{
return value.Name;
}
}
如果这没有帮助,请提供一个更完整的例子说明您要做的事情。
答案 1 :(得分:2)
T
是Peno
类型。所以你要做的是Peno.Name
,这可能不是你想要的。像这样的东西会起作用:
public string GetName(T t)
{
return t.Name;
}
答案 2 :(得分:0)
静态属性不支持继承。因此,你可以只调用Peno.Name而不是去找T.
如果您要访问普通属性,则需要创建一个T实例,以便调用其属性Name。
答案 3 :(得分:0)
T是通用类型参数,而不是传递给使用T的类的参数。
一个很好的例子是List<T>
你说这是一个List,这意味着你要创建一个包含String类型对象的列表。