Fai*_*sal 9 .net c# powershell powershell-3.0
假设我们在用C#编写的.NET类库中定义了一些接口.有没有办法在PowerShell脚本中实现这些接口?
称之为业务需求.作为供应商,我们提供一些由客户实施的接口来使用我们的产品.我们的一位客户希望通过PowerShell脚本执行此操作.
小智 13
这是PowerShell 5.0实现.Net IEqualityComparer接口的一个简单示例:
Class A:System.Collections.IEqualityComparer {
[bool]Equals($x,$y) { return $x -eq $y }
[int]GetHashCode($x) { return $x.GetHashCode() }
}
[A]$a=[A]::new()
$a.Equals(1,1) -- returns True
$a.Equals(1,2) -- returns False
$a.GetHashCode("OK") -- returns 2041362128
Run Code Online (Sandbox Code Playgroud)
你甚至可以有一个类(称为A),它继承自另一个类(称为B)并实现IEqualityComparer:
Class A:B,System.Collections.IEqualityComparer {
Run Code Online (Sandbox Code Playgroud)
您可以使用Add-TypeC#,JScript或VBScript定义类.当涉及供应商提供的程序集时,只需在Add-Type调用之前加载它,另一个调用Add-Type:
$sourceCode = @"
public class CustomerClass : Vendor.Interface
{
public bool BooleanProperty { get; set; }
public string StringProperty { get; set; }
}
"@ # this here-string terminator needs to be at column zero
$assemblyPath = 'C:\Path\To\Vendor.dll'
Add-Type -LiteralPath $assemblyPath
Add-Type -TypeDefinition $sourceCode -Language CSharp -ReferencedAssemblies $assemblyPath
$object = New-Object CustomerClass
$object.StringProperty = "Use the class"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5161 次 |
| 最近记录: |