我正在试验C#和PowerShell.在PowerShell文件中创建一个C#类、实例化它并使用它非常简单,如下面的代码所示:
$code = @"
using System;
public abstract class Transporter : IDisposable
{
public abstract void Transport(Order order);
public void Dispose()
{
// Suppress finalization.
GC.SuppressFinalize(this);
}
}
public class Order {
public int Distance { get; set; }
public bool Urgent { get; set; }
}
public class SeawayTransporter : Transporter
{
public override void Transport(Order order)
{
Console.WriteLine("The order transported by SeawayTransporter");
}
}
public class AirwayTransporter : Transporter
{
public override void Transport(Order order)
{
Console.WriteLine("The order transported by AirwayTransporter");
}
}
public class HighwayTransporter : Transporter
{
public override void Transport(Order order)
{
Console.WriteLine("The order transported by HighwayTransporter");
}
}
"@
# use it!
Add-Type -TypeDefinition $code -Language CSharp
$order = [Order]::new()
$order.Distance = 200
$order.Urgent=$false
$highway = [HighwayTransporter]::new()
$highway.Transport($order)
现在,我想将类定义导出到一个单独的文件,类似于PowerShell模块.然而,我遇到了一个挑战,因为我使用的是PowerShell不熟悉的抽象类定义.try 将类定义放在函数中并将其另存为模块(例如,myCSharpModule.psm1),然后导入该模块似乎行不通.如何才能做到这一点?