2016-05-02 18 views
-2

どのようにして別のクラスからcryptメソッドを呼び出し、setmethodまたはgetmethodを挿入できますか?パスワードがテキストボックスから読み込まれています。クラス外の呼び出しGet&Setメソッド

public partial class LogUser : Form 
{ 

    private string userPassword; 
    // textbox where user insert password 
    public string GetUserPassword() 
    { 
     return userPassword; 
    } 

    public void SetUserPassword(string userPassword) 
    { 
     this.userPassword = userPassword; 
    } 

    private void loginUser_Click(object sender, EventArgs e) 
    { 
      MyFunctions.Crypt(GetUserPassword()); 
      // compilator error. 
    }  // can't convert from 'string' to 'Project.LogUser' 
} 

class MyFunctions 
{ 



    public static string Crypt(string cryptPassword) 
    { 
     Random ra = new Random(); 
     int key = Rando.Rand(ra, 22, 4); 
     LogUser cryptingPw = new LogUser(); 
     string crypt = Encrypting(cryptPassword, key); 
     return crypt; 
    } 
} 

私は自分の質問を更新しました。

MyFunctions.Crypt(GetUserPassword()); 

書き込み、このコード:

LogUser objLogUser = new LogUser(); 
MyFunctions.Crypt(objLogUser); 
+2

スコープで許可されている場合は、 'MyFunctions.Crypt'で呼び出すことができます。 – Philippe

+3

あなたの議論のタイプを見てください。それがあなたの問題です。 'GetUserPassword'は文字列を返しますが、あなたの' Crypt'関数は 'LogUser'を期待しています。 –

答えて

6

あなたはあなたの方法GetUserPasswordの戻り値を渡している(だから、暗号化方法は...このコードの代わりに

0

オブジェクトを除いています)をCryptメソッドに追加します。 その方法では、LogUserが入力として想定されています。これは文字列ではありません。

コンパイルエラーを取り除くために、文字列を入力として受け入れるようにCryptメソッドのシグネチャを変更したいと思います。

+0

新しく作成された 'LogUser'オブジェクトには、ユーザが入力したパスワードが含まれていないため、コンパイルエラーはなくなりますが、目的の結果は得られません。 OPは、単純に引数として "this"を渡すことができますし、文字列を引数として取る 'Crypt'メソッドをリファクタリングすることもできます。 –

関連する問題