我正在调用具有两个不同类的通用方法,如下所示:
FillDataPointsInOrder<Metrics>(dataPoints.Where(O => O.SortOrder != null).OrderBy(O => O.SortOrder));
FillDataPointsInOrder<Metric>(angieStatsCmp.GetDataColumns());
private void FillDataPointsInOrder<T>(IEnumerable<T> dataPoints)
{
foreach (T dpoint in dataPoints)
{
if (!dpoint.IsPhone)
FillDrp(this.EmailDrp, dpoint.Name, dpoint.MetricId.ToString(), dpoint.VName);
if (dpoint.IsPhone && this.IsPhoneShop)
FillDrp(this.PhoneDrp, dpoint.Name, dpoint.MetricId.ToString(), dpoint.VName);
}
}
在“FillDataPointsInOrder”方法中我得到编译错误:
'T' does not contain a definition for 'IsPhone' and no extension method 'IsPhone' accepting a first argument of type 'T' could be found (are you missing a using directive or an assembly reference?)
Name 、 MetricId 和 VName 属性的错误相同。不确定为什么 T 无法访问 Metrics 和 Metric 的属性。如果我从通用方法中删除代码并直接在 foreach 中通过 dataPoints 编写它,它工作正常。
有人可以建议这里有什么问题吗?