假设我有一个 C# DLL,其中包含一个类
AdditionLibrary
,如下所示
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;
}
}
}
我想从 powershell 调用此类的
Add
和 AddNum
方法。
我可以轻松地调用 Add
方法,因为它是 POD 数据类型 (int),如下所示,来自 powershell。
Add-Type -Path "AdditionLibrary.dll"
$result = [AdditionLibrary.AdditionOperation]::Add(100,200)
如何调用需要自定义类型
AddNum
的AddNumbers
方法?
是否可以不将代码嵌入到 powershell 中(如下所示)并通过调用表达式进行调用?
Add-Type -TypeDefinition $code -Language CSharp
我不知道如何在 powershell 中创建 AddNumbers 实例并将其作为参数传递给 C# DLL。
您可以使用哈希表语法来实例化
AddNumbers
。由于所有 struct
都有一个空向量,因此这种语法应该始终适用于它们。请参阅从哈希表创建对象。
Add-Type '
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;
}
}
}'
$addNum = [AdditionLibrary.AdditionOperation+AddNumbers]@{
a = 1
b = 2
}
[AdditionLibrary.AdditionOperation]::AddNum($addNum) # 3