Oop 在自定义代码中使用同类第三方类
最初的问题与C#有关,但几乎所有强类型编程语言开发人员都会理解 我有两个来自不同第三方库的类。比如说Oop 在自定义代码中使用同类第三方类,oop,Oop,最初的问题与C#有关,但几乎所有强类型编程语言开发人员都会理解 我有两个来自不同第三方库的类。比如说Location1和Location2。它们都是密封的,并且具有相同类型的纬度和经度属性。 我编写自定义类(比如说Clusterizer),其中包含处理地理点的方法。这两个外部库的逻辑是相同的。两个location类都应该可以接受my类。对于获得单个lat/long参数对的方法,一切都正常。例如: var point = ... Clusterizer.AddToCluster(point.Lat
Location1
和Location2
。它们都是密封的,并且具有相同类型的纬度
和经度
属性。我编写自定义类(比如说
Clusterizer
),其中包含处理地理点的方法。这两个外部库的逻辑是相同的。两个location类都应该可以接受my类。对于获得单个lat
/long
参数对的方法,一切都正常。例如:
var point = ...
Clusterizer.AddToCluster(point.Latitude, point.Longitude);
问题在于集合。我想编写这样调用的方法:
Clusterizer.AddClusters(points);
public void AddToCluster<T>(IEnumerable<T> points,
Func<T, double> latitudeGetter,
Func<T, double> longitudeGetter)
{
}
或
要点:
Location1
和Location2
创建2个重载。对于这两个类,最好都使用单一方法ILocation
,带有Lat
和Lon
属性),但它们当然没有ILocation
,因为原始类是密封的
集群化器实现,因为两者的逻辑是相同的
Location
类,因为创建一个新集合并将其转换回比较昂贵Clusterizer.AddClusters(points);
public void AddToCluster<T>(IEnumerable<T> points,
Func<T, double> latitudeGetter,
Func<T, double> longitudeGetter)
{
}
您对我的问题有更好的想法吗?为什么不创建2个重载?对我来说,这听起来是迄今为止最简单的方法。@JonSkeet smth喜欢
M1(Loc1)
和M2(Loc2)
方法调用公共的M(loc.Lat,loc.Lon)
?是的,可能-尽管我可能会给消息起相同的名字。您可以让这些方法的实现在最后使用该思想,使用函数。。。