使用最近从我们的硬件供应商处获得的 dll(用于在 .NET sdk 中工作)。他们为所有的类、方法等提供了不错的文档。但他们所有的示例都是用 C# 编写的。我不精通 C#,正在努力将所有内容都转换为 PowerShell。我取得了一些进展,但遇到了困难,正在寻求帮助。
这是他们在 C# 中的示例:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Vendor.Components.Flashlight.Sdk.Examples
{
class MyApp
{
public void Execute()
{
var device = new FlashlightController();
device.Light(FlashlightColor.Green);
}
}
}
到目前为止,这是我在 PowerShell 中的位置(如果有更雄辩的方式,请随时告诉我):
## Vendor DLL path
$assemblyFlashlight = 'C:\FlashlightDLL\Flashlight.Sdk.dll'
## Adding new assembly as a Type and listing members
$typeFlashLight = Add-Type -Path $assemblyFlashlight -PassThru
$typeFlashlight
IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True False DotfuscatorAttribute System.Attribute
True False BusylightController System.Object
True True BusylightSoundClip System.Enum
True True BusylightVolume System.Enum
True False BusylightColor System.Object
False False b System.Object
False False c System.Object
False False e System.Object
False False f System.Object
False False d System.Object
False False i System.ValueType
False False a System.ValueType
False False g System.Object
False False h System.ValueType
False True d System.MulticastDelegate
False False b System.ValueType
False False e System.Object
False False c System.Object
False False f System.Object
False False a d
False False a System.Object
## Creating objects
$objController = New-Object $typeFlashLight[1]
$objSoundClip = New-Object $typeFlashLight[2]
$objVolume = New-Object $typeFlashLight[3]
$objColor = New-Object $typeFlashLight[4]
上面的 PowerShell 代码运行没有错误,我的所有 $obj 变量都包含预期的成员:
$objColor|Get-Member
Name MemberType Definition
---- ---------- ----------
Equals Method bool Equals(System.Object obj)
GetHashCode Method int GetHashCode()
GetType Method type GetType()
ToString Method string ToString()
BlueRgbValue Property int BlueRgbValue {get;set;}
GreenRgbValue Property int GreenRgbValue {get;set;}
RedRgbValue Property int RedRgbValue {get;set;}
所以我认为我在正确的轨道上。但我不知道如何翻译某些东西,比如“IsPublic”、“IsSerial”,而且我对“Dotfuscator”的研究并没有给我任何我能消化的东西。