有一个叫做圆圈的课.它包含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)
但我有这样的警告:
"通过派生类型调用静态方法"
有人可以解释一下这是什么意思吗?
SetZIndex在Panel类上定义,Canvas派生自.编译器正在生成警告,说明您正在子类型上使用静态方法.这不是一个实际问题,但在某些方面使用时可能会导致混淆.由于SetZIndex无效返回,这应该不是问题.
但想象如下:
var ftpRequest = (FtpWebRequest) HttpWebRequest.Create("ftp://my.ftp.com");
Run Code Online (Sandbox Code Playgroud)
Create实际上是一个静态方法WebRequest,但是用它HttpWebRequest来代替,因为它是派生类型,你可以这样做.所以,你希望它是一个正在生成的Web请求,对吧?但它不是,它生成一个FtpWebRequest,因为它在URI中指定.
编辑:
我想指出的是,通常情况下,编译器警告是有原因的,也就是存在这种情况.只要SetZIndex在Canvas类中没有创建过载,调用就是安全的.但正如@SriramSakthivel在评论中指出的那样,如果任何扩展方法或静态方法一直添加到Canvas类中(使用new修饰符),由您或其他任何人,它将不再输出所需的结果,您必须是意识到这一点.