2013-09-24 9 views
5

मैं निम्नलिखितएक स्टेटिक कक्षा के भीतर स्टेटिक वर्ग तक पहुँचने के लिए PowerShell का उपयोग

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"; 
     } 
    } 
} 

मैं powershell का उपयोग कर myValue प्राप्त कर सकते हैं,

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

की तरह के रूप में एक वर्ग है लेकिन मैं प्राप्त करने में असमर्थ हूँ कक्षा myChildValue कक्षा के भीतर कक्षा। क्या कोई मदद कर सकता है?

सोचा कि यह नीचे जैसा कुछ हो सकता है लेकिन $ childValue हमेशा खाली रहता है।

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

उत्तर

8

यह [Foo.Bar.ParentClass+ChildClass] है। PowerShell 3 टैब पूर्ण होने पर आपको उतना ही बताएगा। इसके अलावा, आप सीधे संकलन और कोड को लोड करने Add-Type उपयोग कर सकते हैं:

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 

कोई ज़रूरत नहीं सी # संकलक और [Assembly]::LoadWithPartialName साथ बेला के आसपास।

+0

धन्यवाद, इतनी तेजी से जवाब देने के लिए अतिरिक्त बिंदु। क्या वह + साइन इन है, इसलिए यदि बच्चे के पास कक्षा के नीचे एक वर्ग था तो यह मुझे Foo.Bar.ParentClass + ChildClass + ChildOfChildClass – Cann0nF0dder

+2

'+' उस वर्ग के आंतरिक नाम से है। सी # नामस्थान अलगाव और नेस्टेड कक्षाओं दोनों के लिए डॉट '.' का उपयोग करता है, लेकिन .NET स्वयं नहीं करता है। यह तब स्पष्ट हो जाता है जब आप प्रकारों तक पहुंचने के प्रतिबिंब का उपयोग करते हैं (और यह भी दस्तावेज [वहां] (http://msdn.microsoft.com/library/w3f99sx1.aspx) है, पृष्ठ के आधे रास्ते के बारे में)। तो हाँ, नेस्टेड नेस्टेड कक्षाएं '+' का भी उपयोग करेंगी। – Joey

+0

लिंक और स्पष्टीकरण के लिए धन्यवाद। – Cann0nF0dder

संबंधित मुद्दे