Дженерик из другой сборки - PullRequest
2 голосов
/ 22 ноября 2011

Я пытался создать клиент WCF, следуя инструкциям здесь: Выполнение односторонней операции службы wcf из powershell

Вот фрагмент кода, который ломается

$contractDescription = [System.ServiceModel.Description.ContractDescription]::GetContract([Iinterface])
$serviceEndpoint = New-Object System.ServiceModel.Description.ServiceEndpoint $contractDescription
$channelFactory = New-Object "System.ServiceModel.ChannelFactory``1[Iinterface]" $serviceEndpoint

Мой интерфейс хранится в отдельной сборке, которая у меня есть Add-Typed. Что меня удивляет, так это то, что это

    $contractDescription = [System.ServiceModel.Description.ContractDescription]::GetContract([Iinterface])

работает просто отлично, но

    $channelFactory = New-Object "System.ServiceModel.ChannelFactory``1[Iinterface]" $serviceEndpoint

не работает с:

New-Object: не удается найти тип [System.ServiceModel.ChannelFactory`1 [Iinterface]]: убедитесь, что сборка, содержащая этот тип, загружена. В C: \ Users \ amarchuk \ AppData \ Local \ Temp \ 1 \ bbc2b1ab-fe3a-4982-a561-2bfe926b7362.ps1: 29 char: 29 + $ channelFactory = New-Object <<<< "System.ServiceModel.ChannelFactory``1 [Iinterface]" $ serviceEndpoint + CategoryInfo: InvalidType: (:) [New-Object], PSArgumentException + FullyQualifiedErrorId: TypeNotFound, Microsoft.PowerShell.Commands.NewObjectCommand </p>

Я испортил синтаксис вокруг дженериков? Благодаря.

Ответы [ 2 ]

0 голосов
/ 05 октября 2012

Обходной путь должен использовать

$channelFactory = New-Object 'System.ServiceModel.ChannelFactory``1[System.Object]
0 голосов
/ 22 ноября 2011

Попробуйте это:

$channelFactory = New-Object 'System.ServiceModel.ChannelFactory``1'([Iinterface])

EDIT:

или

$channelFactory = New-Object -typename 'System.ServiceModel.ChannelFactory``1'([Iinterface])

но я могу это проверить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...