如何对不同的类使用相同的方法作为参数

时间:2015-04-19 06:03:29

标签: c# parameter-passing

我有List<>的功能设置为参数,看起来像这样:

private Double CalculateConsumption(List<GasConsumRecord> gasRecord)
{
  ...
  foreach (var record in gasRecords){
    var x = record.Counter;
    var y = record.Pressure;
  ...
  }
  ...
}

GasConsumRecord 类有更多属性,但在这个函数中我只用了2个。

我还有另一个类 - AirConsumRecord ,它具有相同的2个属性但其他属性不同。这两个类只有属性,但没有方法。

我的问题是:如何对两个不同的类List&lt;&gt;使用相同的方法?作为参数?

提前致谢。

1 个答案:

答案 0 :(得分:6)

您需要您的类实现相同的接口,或者从包含这两个属性的相同基类派生,然后使用带有类型约束的泛型方法:

如果使用接口:

public interface IRecord {
    int Counter { get; set; }
    int Pressure { get; set; }
}

public class GasConsumRecord : IRecord {
    public int Counter { get; set; }
    public int Pressure { get; set; }
}

public class AirConsumRecord : IRecord {
    public int Counter { get; set; }
    public int Pressure { get; set; }
}

private Double CalculateConsumption<T>(List<T> records)
    where T : IRecord
{
    foreach (IRecord record in records){
        var x = record.Counter;
        var y = record.Pressure;
    }
}