如何将相同的方法用于不同的 类 作为参数
How use the same method for different classes as parameter
我有一个将 List<> 设置为参数的函数,它看起来像这样:
private Double CalculateConsumption(List<GasConsumRecord> gasRecord)
{
...
foreach (var record in gasRecords){
var x = record.Counter;
var y = record.Pressure;
...
}
...
}
GasConsumRecord class 有更多属性但是在这个函数中我只使用了 2.
我还有另一个 class - AirConsumRecord,它具有相同的 2 个属性,但其他属性不同。两个 class 都只有属性,没有方法。
我的问题是:如何将相同的方法用于两个不同的 class List<> 作为参数?
提前致谢。
您需要 classes 实现相同的接口,或从包含这两个属性的相同基 class 派生,然后使用具有类型约束的泛型方法:
如果您使用接口:
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;
}
}
我有一个将 List<> 设置为参数的函数,它看起来像这样:
private Double CalculateConsumption(List<GasConsumRecord> gasRecord)
{
...
foreach (var record in gasRecords){
var x = record.Counter;
var y = record.Pressure;
...
}
...
}
GasConsumRecord class 有更多属性但是在这个函数中我只使用了 2.
我还有另一个 class - AirConsumRecord,它具有相同的 2 个属性,但其他属性不同。两个 class 都只有属性,没有方法。
我的问题是:如何将相同的方法用于两个不同的 class List<> 作为参数?
提前致谢。
您需要 classes 实现相同的接口,或从包含这两个属性的相同基 class 派生,然后使用具有类型约束的泛型方法:
如果您使用接口:
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;
}
}