2016-08-02 6 views
0

これは簡単なことだと思っていましたが、それを動作させる方法を理解できません。VB.Netでクラスフィールドの名前をプライベートサブに渡して更新する

私は値を確認したいクラス内に一連のフィールドを持っています。だから私は私的な方法でこれを渡すことが理想的だろうと思った同じif ... then ... else文を書くのではなく。もちろん

Private Sub checkParameter(ByRef p_param As Object, ByRef p_private_field As Object, p_exception As String) 

     If Not p_param Then 
      Throw New Exception(p_exception) 
     Else 
      p_private_field = p_param 
     End If 
    End Sub 

問題は、私はp_private_fieldは私が渡しています実際のプライベートフィールドになりたいということです

だから私は、次のコードでメソッドを呼び出した場合:。

checkParameter(i_input_folder, "p_input_folder", "Input folder must be supplied") 

次に、メソッドはi_input_folderに値があったかどうかをチェックし、そうであればそれをプライベートフィールドp_input_folderに代入し、指定されたメッセージで例外をスローしません。

ご協力いただければ幸いです。

乾杯

+0

クラスの外部でコードをチェックするのではなく、 'IsValid'や' IsComplete'のようなメソッドを考えてください。そうすれば、クラス自身がチェックすることができます。 – Plutonix

答えて

-1

は、ほんの少しの誤植のように思えるあなたは文字列として2番目のパラメータを渡す

checkParameter(i_input_folder, "p_input_folder", "Input folder must be supplied") 

(の名前私は推測出願)がありますが、オブジェクト自体

を渡す必要があります
+0

HI David、私は実際にそれを最初に試しましたが、コードをデバッグするときに、オブジェクト自体への参照ではなく空の文字列が渡されます。クラスフィールドを示すためにPHP {}のように参照名を囲む必要があると私は考えていました。見ていただきありがとうございます。 – EvilKermitSaurus

+0

@EvilKermitSaurusはp_input_folderに既に値がありますか?その値が空の文字列ならば、すべてがうまくいくはずです –

+0

p_input_folderは、i_input_folderの値で更新したいクラスフィールドの名前です。だから、メソッドのコードでは、p_private_field = p_paramはp_input_folder = i_input_folderを意味します。私はそれが意味があることを望む? – EvilKermitSaurus

関連する問題