通过派生类型调用的静态方法

Ген*_*кин 9 c# sharpdevelop

有一个叫做圆圈的课.它包含circleID,circleGeometry和circlePath属性.

public class Circle 
{
    public string ID {get; set;}
    public EllipseGeometry circleGeometry {get; set;}
    public Path circlePath {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

现在,我正在尝试为圆圈设置ZIndex值.例如,它将是2.

Canvas.SetZIndex(someCircleID.circlePath,2);
Run Code Online (Sandbox Code Playgroud)

但我有这样的警告:

"通过派生类型调用静态方法"

有人可以解释一下这是什么意思吗?

Yuv*_*kov 8

SetZIndexPanel类上定义,Canvas派生自.编译器正在生成警告,说明您正在子类型上使用静态方法.这不是一个实际问题,但在某些方面使用时可能会导致混淆.由于SetZIndex无效返回,这应该不是问题.

但想象如下:

var ftpRequest = (FtpWebRequest) HttpWebRequest.Create("ftp://my.ftp.com");
Run Code Online (Sandbox Code Playgroud)

Create实际上是一个静态方法WebRequest,但是用它HttpWebRequest来代替,因为它是派生类型,你可以这样做.所以,你希望它是一个正在生成的Web请求,对吧?但它不是,它生成一个FtpWebRequest,因为它在URI中指定.

编辑:

我想指出的是,通常情况下,编译器警告是有原因的,也就是存在这种情况.只要SetZIndexCanvas类中没有创建过载,调用就是安全的.但正如@SriramSakthivel在评论中指出的那样,如果任何扩展方法或静态方法一直添加到Canvas类中(使用new修饰符),由您或其他任何人,它将不再输出所需的结果,您必须是意识到这一点.