有一个类,叫做circle。它包含 circleID、circleGeometry 和 circlePath 属性。
public class Circle
{
public string ID {get; set;}
public EllipseGeometry circleGeometry {get; set;}
public Path circlePath {get; set;}
}
现在,我正在尝试为一个圆设置 ZIndex 值。例如,它将是 2。
Canvas.SetZIndex(someCircleID.circlePath,2);
但我有这样的警告:
"static method invoked via derived type"
谁能解释一下这是什么意思?
最佳答案
SetZIndex
在 Panel
类上定义,Canvas
派生自该类。编译器生成一条警告,说明您正在对子类型使用静态方法。这不是一个实际的问题,但在以某些方式使用时可能会导致混淆。由于 SetZIndex
返回无效,所以这应该不是问题。
但想象一下:
var ftpRequest = (FtpWebRequest) HttpWebRequest.Create("ftp://my.ftp.com");
Create
实际上是 WebRequest
的一个静态方法,但是用在 HttpWebRequest
上,因为它是一个派生类型并且你 < em>可以这样做。所以,您希望它是正在生成的 Web 请求,对吗?但它不是,它生成一个 FtpWebRequest
,因为它是在 URI 中指定的。
编辑:
我想指出的是,一般来说,编译器警告的存在是有原因的,这也是这个警告存在的方式。只要没有在 Canvas
类中创建的 SetZIndex
重载,调用就是安全的。但是正如@SriramSakthivel 在评论中指出的那样,如果您或任何其他人,它将不再输出所需的结果,您必须意识到这一点。
关于c# - 通过派生类型调用的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30298053/