繁体   English   中英

声明一个结构符合的接口

[英]Declare an interface that a struct conforms to

我需要PCL代码中类似PointF的结构。 但是System.Drawing不可用。 因此,我声明了自己的结构:

public struct PointFF: IPointF {
  public float X { get; set; };
  public float Y { get; set; };
}

现在,我想定义一个PointF和PointFF都符合的接口IPointF:

interface IPointF {
  float X {get; set; };
  float Y {get; set; };
}

最后,我想以某种方式“使其正式化”,使PointF符合IPointF,因此我可以执行以下操作:

public void DoFunkyStuff (IPointF p) {
  float x = p.X;
  float y = p.Y;
  // do something with x and y
}

那可能吗?

不,您不可能按自己的意愿去做。

在一般情况下,虽然它是可能的结构来实现的接口,它被认为是一个非常糟糕的主意。 它迫使您的结构被装箱,并且倾向于破坏您期望从结构中获得的值类型语义。 但是语言允许,所以这不是您的主要问题。

您不能做的就是以某种方式从现有结构中安排一个接口来实现该接口,而无需更改其源代码。 由于您无法控制System.Drawing.PointF ,因此无法说服编译器它实现了IPointF

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM