суббота, 4 февраля 2012 г.

PowerShell: Пример создание нового типа и его объектов по исходникам C#


В PowerShell можно динамически скомпилировать класс, написав его на C#, и затем создать его экземпляры.

Пример:

PS C:\Users\user> Add-Type -Language CSharpVersion3 -TypeDefinition @"
    public class CompanyInfo
    {
        public CompanyInfo() {}


        public string Name { get; set; }
        public string Address { get; set; }
public int Index { get; set; }

public CompanyInfo(string name, string address, int index) {
Name = name;
Address = address;
Index = index;
}
    }
"@


$a = New-Object -TypeName CompanyInfo
$a.Name = "GPSM"
$a.Address = "Russia, Saint-Petersburg, Yablochkova str. 7"
$a.Index = 199198
$b = New-Object -TypeName CompanyInfo -ArgumentList "RedCompany", "Russia, Moskow, Red Square", 777777
$a | Format-List
$b | Format-List

Результат работы этого кода будет таким:

PS C:\Users\user> $a | Format-List

Name    : GPSM
Address : Russia, Saint-Petersburg, Yablochkova str. 7
Index   : 199198

PS C:\Users\user> $b | Format-List

Name    : RedCompany
Address : Russia, Moskow, Red Square
Index   : 777777

Очень интересные примеры, относящиеся к использованию командлета Add-Type можно получить, набрав это: Get-Help Add-Type –example
Как видим в примерах из справки - исходники могут быть не только на C#, но и на F#, VB.Net, а так же на JScript.

Комментариев нет: