我有一个用于我的几何图形的界面,如下所示:
public interface IGeometry
{
T Translate<T>(in v2 vector) where T : IGeometry;
T MoveTo<T>(in v2 vector) where T : IGeometry;
}
我对如何在我的 struct 中定义它感到困惑,在 struct 中我专门返回实现接口的 struct 类型.我在我的Circle : IGeometry
struct 中有这个:
public readonly struct Circle : IGeometry
{
public readonly v2 _o;
public readonly double _r, _area, _circum;
public v2 Origin => _o;
public double Radius => _r;
public double Circumference => _circum;
public Circle(in v2 origin, in double radius)
{
_o = origin;
_r = radius;
_area = _r * _r * Math.PI;
_circum = _r * 2 * Math.PI;
}
public T Translate<T>(in v2 translation) => new(_o + translation, _r);
public T MoveTo<T>(in v2 position) => new(position, _r);
}
然而,我得到的错误是:
Error CS0425: The constraints for type parameter 'T' of method 'Circle.Translate<T>(in v2)'
must match the constraints for type parameter 'T' of interface method
'IGeometry.Translate<T>(in v2)'. Consider using an explicit interface implementation instead.
我不太清楚该怎么解决这个问题.