PowerShell嵌入C#类调用Thread.Sleep报实例引用访问静态成员错误
报错根因
代码并未真正通过类型名限定调用Sleep静态方法,触发编译错误属于预期结果:
System.Threading.Thread.CurrentThread是实例属性,返回值为当前运行的线程实例对象,在该实例后追加.Sleep(v)的写法,本质仍是通过实例引用访问静态成员,完全匹配报错描述的错误场景。Sleep()是System.Threading.Thread类型的静态方法,归属类型本身,不绑定任何具体的线程实例。
修正代码
将Sleep方法的调用改为直接通过Thread类型发起即可,完整可运行代码如下:
Add-Type -TypeDefinition @' public class sc { public static int init(int v) { System.Threading.Thread.Sleep(v); return 1; } } '@ [sc]::init(1000) | Write-Host
内容的提问来源于stack exchange,提问作者irvnriir
相关产品推荐
相关产品推荐

