我有一个 Student 类,里面有一个属性 Studentname
和 address
。
我还有一个如下所示的静态函数,用于按address(living area)
过滤学生
public static List<T> FilterByAddress<T>(List<T> StudentList, string address )
{
Type typeParameterType = typeof(T); // it is returning Student
StudentList = StudentList.FindAll(x => x.address == address );
return StudentList;
}
我在这部分代码“x.address”上收到一个错误,错误 42“T”不包含“Studentname”的定义并且没有扩展方法“Studentname”接受类型为“T”的第一个参数可以找到(您是否缺少 using 指令或程序集引用?)
如何通过让 T 识别为学生类(class)来解决这个问题?
更新 根据您的评论:
The T can be different not necessary must be student , it be other class than have a property Address
Generic 不会以这种方式工作。如果你想使用一个方法访问多个类的公共(public) Address
属性,你需要让它们都实现一个接口(interface),比如 IHasAddress
(糟糕的名字),然后定义一个方法的一般约束,例如 where T : IHasAddress
原始答案
如果你需要它成为一个Student
,你不应该使方法通用:
public static List<Student> FilterByAddress(List<Student> StudentList, string address )
{
StudentList = StudentList.FindAll(x => x.address == address );
return StudentList;
}
我是一名优秀的程序员,十分优秀!