2013-03-07 2 views
8

Например, у меня есть сделки PSObject с двумя свойствами: Ид и transactionName, так что она выглядит следующим образом: сделки { ID: 123 transactionName: tranName1 }доступ PSObject свойство по имени в C#

и я хотите вернуть идентификатор транзакции, если его имя является tranName1.

Он смотрит на меня, что в Powershell сценариев, мы можем просто сделать:

if $transaction.transactionName -eq tranName return $transaction.id 

Однако в C# это даст ошибку, так как он не может распознать свойство по имени ... любые идеи, как сделать это в C#?

+0

Возможно потому, что имя свойства 'transactionName'? –

+0

@ p.s.w.g даже я исправил имя, это не сработает, потому что C# знает транзакцию как PSObject, которая не содержит члена «transactionName» ... – jamesdeath123

+0

Не зарегистрирован код C#. В любом случае, просто найдите тип, затем [* посмотрите документацию *] (http://msdn.microsoft.com/en-us/library/system.management.automation.psobject.aspx) для основных идей использования он .. однако, я подозреваю, что использование правильно напечатанного «транзакционного» значения для начала было бы более полезным. – 2013-03-07 18:46:56

ответ

18

попробовать что-то вроде этого:

psobjectvariable.Properties["transactionName"].Value 
+0

это трюк! большое спасибо! – jamesdeath123

+0

Я знаю, что это старый ответ, но как насчет подзадач, например: $ transaction.transactionName.propertyA – Roberto

+0

@Roberto Если 'propertyA' - это PSObject, вы можете сделать так:' ((PSObject) psobjectvariable.Properties ["transactionName "] .Value) .Properties [" propertyA "]' – AstralisSomnium