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

如何在PowerShell中调用带自定义类型参数的C# DLL?

在PowerShell中调用C# DLL的自定义结构体参数方法

给定一个包含AdditionLibrary命名空间的C# DLL,代码如下:

namespace AdditionLibrary
{
    public static class AdditionOperation
    {
        public static int Add(int a, int b)
        {
            return a + b;
        }
        public struct AddNumbers
        {
            public int a;
            public int b;
        }
        public static int AddNum(AddNumbers addNum)
        {
            return addNum.a + addNum.b;
        }
    }
}

已知可以通过以下方式调用使用普通int参数的Add方法:

Add-Type -Path "AdditionLibrary.dll"
$result = [AdditionLibrary.AdditionOperation]::Add(100,200)

调用需要自定义结构体AddNumbers的AddNum方法(无需嵌入C#代码)

可以直接通过PowerShell创建结构体实例并传递参数,步骤如下:

  1. 加载DLL(和调用Add方法一致)
Add-Type -Path "AdditionLibrary.dll"
  1. 创建AddNumbers结构体实例并赋值
    由于AddNumbers是嵌套在AdditionOperation类中的结构体,需要用+符号表示嵌套关系来引用类型,然后实例化并给公共字段赋值:
# 实例化嵌套结构体
$addNumInstance = [AdditionLibrary.AdditionOperation+AddNumbers]::new()
# 为结构体的公共字段赋值
$addNumInstance.a = 150
$addNumInstance.b = 250
  1. 调用AddNum方法并传入结构体实例
$sumResult = [AdditionLibrary.AdditionOperation]::AddNum($addNumInstance)
# 输出结果
Write-Host "计算结果:$sumResult"

说明

  • PowerShell支持直接实例化C#值类型(结构体),无需额外编写嵌入C#代码
  • 嵌套类型的引用格式为父类型+嵌套类型,这是.NET中引用嵌套类型的标准方式
  • 结构体的公共字段可以直接在PowerShell中访问和赋值

内容的提问来源于stack exchange,提问作者Gajanana D S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 08:22:12