Cann0nF0dder
Cann0nF0dder

Reputation: 554

Using Powershell to access Static class within a Static Class

I have a class as like the following

namespace Foo.Bar
{
    public static class ParentClass
    {
      public const string myValue = "Can get this value";

      public static class ChildClass
      {
        public const string myChildValue = "I want to get this value";
      }
     }
}

I can get the myValue using powershell,

[System.Reflection.Assembly]::LoadWithPartialName("Foo.Bar")
$parentValue = [Foo.Bar.ParentClass]::myValue

But I'm unable to get the class within the class myChildValue. Can anyone help?

Thought it might be something like below but $childValue is always empty.

[System.Reflection.Assembly]::LoadWithPartialName("Foo.Bar")
$childValue = [Foo.Bar.ParentClass.ChildClass]::myChildValue

Upvotes: 5

Views: 4266

Answers (1)

Joey
Joey

Reputation: 354606

It's [Foo.Bar.ParentClass+ChildClass]. On PowerShell 3 tab completion will tell you as much. Furthermore, you can use Add-Type to compile and load the code directly:

C:\Users\Joey> add-type 'namespace Foo.Bar
>> {
>>     public static class ParentClass
>>     {
>>       public const string myValue = "Can get this value";
>>
>>       public static class ChildClass
>>       {
>>         public const string myChildValue = "I want to get this value";
>>       }
>>      }
>> }'
>>
C:\Users\Joey> [Foo.Bar.ParentClass+ChildClass]::myChildValue
I want to get this value

No need to fiddle around with the C# compiler and [Assembly]::LoadWithPartialName.

Upvotes: 11

Related Questions