我們有一個.Net對象,它有一個靜態委託(數據訪問策略),必須在實例化對象之前設置它。委託也可以通過構造函數重載之一傳入。從PowerShell設置靜態委託屬性(或將委託傳遞給構造函數)
我有另一個對象,有委託,我需要設置,但我無法弄清楚在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);
編輯:爲了澄清戰略是一個靜態的代表
Public static Func<DataContext> Strategy
和createContext的,我想設置爲委託的實例方法,通過設置靜態屬性,或者在方法傳遞給構造函數。
另一種選擇是,如果有出現在PowerShell中的方式來創建在C#中的匿名委託這樣的:
UnitOfWork.Strategy = delegate()
{
var ctx = db.CreateContext();
return ctx;
};
如果你試圖像'$ db.CreateContext'那樣訪問'CreateContext',它可能會工作。 (從您的C#示例看起來像'CreateContext'不是靜態屬性,而是實例屬性) – stej 2010-08-23 19:57:15