2013-02-12 47 views
1

這是我剛纔的問題的延續:PowerShell模塊是C#中類的更近的「東西」嗎?

How to create real objects with behavior (methods) in PowerShell?

我想,現在我能夠封裝在類我的行爲,但我仍然認爲這種做法是哈克,我想解決這個問題問題PowerShell的方式

因此,PowerShell模塊似乎是答案...

我想知道,如果例如我要封裝在PowerSh面向對象的方法行爲怎麼會是最好的選擇/方法?

是否爲此目的設計了PowerShell模塊?

編輯01

換句話說你們如何編寫腳本?

你剛進去一程序的方式

或...

是否有寫PowerShell腳本時應用一些面向對象編程概念的更清潔的方式寫呢?

+0

模塊似乎並不像他們介紹一個對象系統,如果一個在PSH中不可用的話。 – millimoose 2013-02-12 19:12:19

+0

我剛剛更新了我的問題。 – Jupaol 2013-02-12 19:16:31

+0

所以......儘管得到了答案,你仍然在問同樣的問題嗎? (其中兩個實際上。) – millimoose 2013-02-12 19:18:39

回答

4

不知道它是否是最好的方法,但爲什麼不使用pscustomobject?

$o=New-Object -TypeName pscustomobject -Property @{"val"="test"} 
Add-Member -InputObject $o -MemberType ScriptMethod -Name upper -Value {$this.val.toUpper()} 
$o.upper() 

TEST 

或者也許你會發現當幸福來敲門與CodePlex上這個項目:http://psclass.codeplex.com/

+0

該項目看起來很棒。謝謝你,兄弟。編寫我的C#代碼時我非常嚴格,現在我正在使用PowerShell,並且我不太願意編寫** UGLY Procedural code **。我想我會用PSClass創建一些概念證明。非常感謝你 – Jupaol 2013-02-12 20:25:30

3

我拿到這個如下。我不相信腳本語言是面向對象的。他們大多會支持某種對象模型,但這不是他們的主要目的。

Powershell確實支持它,因爲它建立在.NET之上,因此您可以完全訪問.NET的對象模型。

您可以使用powershell腳本(包含類和全部)編寫內嵌的C#代碼,並對其進行動態編譯,然後重複執行。一旦你習慣了這樣做,這並不難。

在它自己的PowerShell不提供遠遠超出你可以在.NET中找到的對象系統。

如果您還沒有找到它,請參閱Add-Member cmdlet,如果出於任何宗教或文化原因,您不希望在您的PowerShell代碼中嵌入c#類,那麼該cmdlet將與您之後的距離最接近。

希望這會有所幫助。

相關問題