如何在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创建结构体实例并传递参数,步骤如下:
- 加载DLL(和调用
Add方法一致)
Add-Type -Path "AdditionLibrary.dll"
- 创建
AddNumbers结构体实例并赋值
由于AddNumbers是嵌套在AdditionOperation类中的结构体,需要用+符号表示嵌套关系来引用类型,然后实例化并给公共字段赋值:
# 实例化嵌套结构体 $addNumInstance = [AdditionLibrary.AdditionOperation+AddNumbers]::new() # 为结构体的公共字段赋值 $addNumInstance.a = 150 $addNumInstance.b = 250
- 调用
AddNum方法并传入结构体实例
$sumResult = [AdditionLibrary.AdditionOperation]::AddNum($addNumInstance) # 输出结果 Write-Host "计算结果:$sumResult"
说明
- PowerShell支持直接实例化C#值类型(结构体),无需额外编写嵌入C#代码
- 嵌套类型的引用格式为
父类型+嵌套类型,这是.NET中引用嵌套类型的标准方式 - 结构体的公共字段可以直接在PowerShell中访问和赋值
内容的提问来源于stack exchange,提问作者Gajanana D S
相关产品推荐
相关产品推荐

