ハードウェアベンダーの1つから最近取得した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」に関する調査では、消化できるものは何も得られませんでした。