【发布时间】:2011-04-02 20:09:27
【问题描述】:
我们有一个 .Net 对象,它有一个静态委托(一种数据访问策略),必须在实例化对象之前设置该委托。委托也可以通过构造函数重载之一传入。
我有另一个对象,它具有我需要设置的委托,但我无法在 PowerShell 中弄清楚如何设置。有谁知道如何在 PowerShell 中设置静态委托属性或将委托传递给构造函数?
我想做类似的事情:
[DALObject]$db = New-Object DALObject;
[UnitOfWork]::Strategy = $db::CreateContext;
或
[DALObject]$db = New-Object DALObject;
[UnitOfWork]$uow = New-Object UnitOfWork($db::CreateConext);
仅供参考,我正在尝试重现可比较的 C# 代码:
DalObject db = new DALObject();
UnitOfWork.Strategy = db.CreateContext;
或
UnitOfWork uow = new UnitOfWork(db.CreateContext);
编辑:澄清 Strategy 是静态委托
Public static Func<DataContext> Strategy
而 CreateContext 是一个实例方法,我想通过设置静态属性或将方法传递给构造函数来设置该委托。
如果 PowerShell 中有一种方法可以在 C# 中创建像这样的匿名委托,那么另一种选择是:
UnitOfWork.Strategy = delegate()
{
var ctx = db.CreateContext();
return ctx;
};
【问题讨论】:
-
如果你尝试像
$db.CreateContext一样访问CreateContext,它可能会起作用。 (从您的 C# 示例来看,CreateContext不是静态属性,而是实例属性)
标签: powershell delegates