Как создать экземпляр объекта в Powershell, который должен быть получен из абстрактного класса .Net

Я хочу использовать Powershell для вставки объектов в Хранилище таблиц Azure, поэтому мне нужно создать экземпляр класса, производного от абстрактного класса .NET Microsoft.WindowsAzure.StorageClient.TableServiceEntity

Я думаю создать экземпляр (в сценарии Powershell 2.0) объекта, используя, например, New-Object, а затем добавить элементы с помощью Add-Member, но не могу добиться создания экземпляра совместимого производного класса TableServiceEntity. (Я могу создавать другие произвольные PSObjects, но, похоже, они этого не сделают)

В качестве альтернативы, если бы кто-нибудь мог показать мне, как создать экземпляр и заполнить ЛЮБОЙ объектный класс, который затем можно было бы передать в метод tableServiceContext.AddObject()


person t0rus    schedule 29.11.2011    source источник
comment
Можете ли вы быть более конкретным и опубликовать несколько примеров кода, включая ту часть, где вы ссылаетесь на сборку   -  person Andrey Marchuk    schedule 29.11.2011


Ответы (1)


Что вы можете сделать, так это создать свой класс в файле cs, а затем сослаться на него в свой сценарий. Вот пример: Сохраните это как файл cs:

using System.Collections;
    public  class MyList : System.Collections.Generic.List<string>
    {
        public static string Test(string input)
        {
            return string.Format("test input {0}", input);
        }
    }

И вот код для его запуска:

cd c:\pst
Add-Type -Path "2.cs" #-ReferencedAssemblies $assembly
[MyList]::Test("aaa")

Возможно, вам потребуется передать свою сборку в ReferencedAssemblies . И вам также может понадобиться загрузить сборки в ваш скрипт

Способ создания таблицы описан здесь: Добавить или заменить объект в таблице Azure. Хранение

person Andrey Marchuk    schedule 29.11.2011
comment
Хорошая идея, но нет ли единственного способа сделать это с помощью Powershell? - person t0rus; 29.11.2011
comment
Если вы найдете код C#, который делает именно то, что вам нужно, его можно переписать на PowerShell. Отредактируйте свой основной пост и люди вам помогут. - person Andrey Marchuk; 30.11.2011
comment
Спасибо. Это помогло и оказалось ключом к решению. В конце концов я использовал Add-Type с параметром -TypeDefinition, чтобы указать короткое определение класса, которое просто наследуется от абстрактного базового класса .NET (в этом case TableServiceEntity), и теперь у вас есть работающий автономный скрипт Powershell - person t0rus; 30.11.2011
comment
Да, я принимаю это, но у меня нет очков, чтобы проголосовать за это. Большое спасибо за ваш быстрый ответ. - person t0rus; 30.11.2011