2016-10-11 6 views
1

私はC#でPowerShellモジュールを作成しています。実行時にコマンドレットの一つは、このように呼ばれます:実行時にユーザーがパラメータを自動補完するために、タブキーを押すまで、これが機能しているTabキーから呼び出されるコンストラクタを避ける

public TestPath() 
{   
    checkPathExistence();   
} 

Test-Path -Path \\path\to\somewhere 

私のコンストラクタは次のようになります名前:

Test-Path -Pa <TAB> 

タブキー火災コンストラクタとTHI私のcheckPathExistence()メソッドが望ましくない結果を引き起こします。 checkPathExistence()を待つようにするには、何かを確認する前にキーを入力してください。

最初の考えはPathがヌルであることを確認することでした。しかし、Pathは必須ではありません。パラメータなしでコマンドレットが呼び出されている場合、元のセッションからの標準パスが設定されています。

void checkPathExistence() 
{    
    if (!File.Exists(this.Path)) 
    { 
     Path = Properties.Settings.Default.Path; 
    } 
    else 
    {     
     Properties.Settings.Default.Path = Path; 
     Properties.Settings.Default.Save(); 
     Console.WriteLine("The path has changed to: " + Path); 
    } 
} 
} 
+0

ここで、TestPathのコンストラクタが呼び出されましたか? – ltiveron

答えて

0

ここでの問題は、コンストラクタでcheckPathExistenceを呼び出すことです。代わりに、パスを含むコマンドラインを処理している間だけ呼び出すように思えます。コンストラクタを空のままにし、代わりにProcessRecordの間にコマンドラインを処理します。 Cmdlet Input Processingを参照してください。

関連する問題