You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell类实例化报错:排查无参new重载找不到的原因

PowerShell自定义类构造函数错误:无法找到无参构造函数重载

问题描述

创建TestResult类的对象时出现错误:Cannot find an overload for "new" and the argument count: "0",尽管TestItem类已显式定义无参构造函数,但仍触发该错误。

错误原因

TestResult类的属性名$TestResult与类名完全同名,导致PowerShell在解析类构造函数时发生混淆,无法正确识别无参构造函数的重载。

修复方案

将TestResult类中的同名属性重命名(比如改为$TestItems),避免与类名冲突即可解决问题。

修复后的完整代码

# class definition
class TestItem
{
    [bool]$TestResult
    [string]$Message
    # 带参构造函数
    TestItem([string]$Message, [bool]$TestResult)
    {
        $this.Message = $Message
        $this.TestResult = $TestResult
    }
    # 无参构造函数
    TestItem() {}
    # 重写ToString()
    [string] ToString()
    {
        return $this.Message
    }
}
# 修复后的TestResult类
class TestResult
{
    [int]$TotalCount
    [int]$PassedCount
    [int]$FailedCount
    # 重命名属性,避免与类名冲突
    [System.Collections.Generic.IList[TestItem]]$TestItems

    # 无参构造函数
    TestResult()
    {
        $this.TestItems = [System.Collections.Generic.IList[TestItem]]::New()
        $this.FailedCount = 0
        $this.PassedCount = 0
        $this.TotalCount = 0
    }
    [void]Failed([string]$Message)
    {
        $this.AddResult($Message,$false)
    }
    [void]Passed([string]$Message)
    {
        $this.AddResult($Message,$true)
    }

    [void]AddResult([string]$Message, [bool]$Result)
    {
        $testItem = [TestItem]::new($Message, $Result)
        $this.TotalCount++
        if($Result)
        {
            $this.PassedCount++
            Write-Verbose "[+]Passed $Message" -Verbose
        }
        else {
            $this.FailedCount++
            Write-Verbose "[-]Failed $Message" -Verbose
        }
        $this.TestItems.Add($testItem)
    }
}

$results = [TestResult]::new()
$results

补充说明

在PowerShell自定义类中,应避免使用与类名完全相同的属性名,这会干扰PowerShell的构造函数解析逻辑。即使显式定义了构造函数,属性与类名的冲突仍可能导致重载识别错误。

内容的提问来源于stack exchange,提问作者Purclot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:45:40