IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)

ExtensionMethod.psm1

Voici un module PowerShell permettant de cr�er un fichier .ps1xml d�di� aux m�thodes d'extension contenues dans un fichier assembly dotnet.

Sous Powershell V1 et V2 on ne peut pas utiliser celles dont le type de this est :

* un type g�n�rique, car le syst�me d'extension de type de PowerShell n�cessite de pr�ciser des noms de type fort pour chaque param�trage de la classe g�n�rique,
* un type interface, car PowerShell ne sait pas nativement 'extraire' une interface particuli�re � partir d'un objet. De plus le pipeline de PowerShell 'transforme' les objets de type IEnumerable en System.Array.

Exemple bas� sur le projet Dvp.NET :

Code :

$PathAsm="C:\Temp\dvp.net-0.2-beta\Binaries"
$TypesFileName="C:\Temp\DateTimeExtensionMethod.Types.ps1xml"
Import-Module ExtensionMethod
#ou
#Import-Module "Votrepath\ExtensionMethod.psm1" -force

Add-Type -Path "$PathAsm\Developpez.Dotnet.dll" -Pass|
#filtre sur le namespace
# Where {$_.Namespace -eq "Developpez.Dotnet.Reflection"} |
Find-ExtensionMethod -ExcludeGeneric|
Get-ExtensionMethodInfo -ExcludeGeneric -ExcludeInterface|
New-HashTable -key "Key" -Value "Value" -MakeArray|
#Cr�e un texte repr�sentant une structure XML que
# l'on ins�re dans un fichier de type PowerShell.
New-ExtensionMethodTypeData > $TypesFileName

#Dans la session courante, chargement et signature si
# n�cessaire, du fichier d'extension de type g�n�r� :
Type $TypesFileName|More
#Si la strat�gie d'ex�cution est 'AllSigned'
if (Get-ExcecutionPolicy -eq "AllSigned" )
{
#Signe $TypesFileName
}
#Met � jour la configuration de type �tendu (ETS)
Update-TypeData $TypesFileName

#usage
$dt=Get-Date
$dt.AddDays(1).Next("Sunday")
# renvoi :
# dimanche 8 ao�t 2010 16:07:54

Developpez.com d�cline toute responsabilit� quant � l'utilisation des diff�rents �l�ments t�l�charg�s.