我有一个方法,它接受一个接口类型并评估该类型是什么,从而需要返回与之相关的类型。但我不确定如何使返回类型对其更加灵活。我尝试了以下内容:
public static T GridPosition <T>(IReSizeableGrid gridData) {
if (gridData is Hex) {
var hexGrid = (HexGrid) gridData;
return HexLibrary.WorldToHex(WorldPoint(Input.mousePosition, GroundPlane), hexGrid);
}
if (gridData is QuadGrid) {
var quadGrid = (QuadGrid) gridData;
return Grid.Get(WorldPoint(Input.mousePosition, GroundPlane), quadGrid);
}
throw new Exception("Wrong type passed to GridPosition: " + gridData.GetType());
}
但是我遇到了这个错误:
无法将类型
Hex
隐式转换为T
这样使用T
是否正确?我试图理解如何正确使用它。
Hex
和QuadGrid
看起来实现了IReSizeableGrid
,是吗?如果是的话,为什么要使用泛型作为返回类型呢?你可以简单地返回IReSizeableGrid
。 - Racil Hilan