How to add members to a PSObject in C#?

.net, c#, mocking, moles, powershell

Solution

`PSMemberInfo` is a abstract class, so you cannot make an instance directly, but choose its subclass

in the page : http://msdn.microsoft.com/en-us/library/system.management.automation.pspropertyinfo(v=vs.85).aspx you can find below:

System.Object 
   System.Management.Automation.PSMemberInfo
    System.Management.Automation.PSPropertyInfo
       System.Management.Automation.PSAliasProperty
       System.Management.Automation.PSCodeProperty
       System.Management.Automation.PSNoteProperty
       System.Management.Automation.PSProperty
       System.Management.Automation.PSScriptProperty

Choose your class, and init it.

Problem

I'm using Microsoft Moles to mock a method. This method call another method that invokes a PowerShell script and returns Collection`<PSObject>` So I want to mock it to return a custom PSObject. It will have two properties, ID and Name. But when I try to use ``` PSObject obj = new PSObject(); obj.Members.Add(new PSMemberInfo( ``` I found the constructor is protected. How can I add properties? Thank you.

Original source