2012-05-10 2 views
0

次のコードを考えてみましょうを受け入れないと宣言しましたそれは抽象的、にextern、またはC#.NETで定義ゲッターは、体が

奇妙なことがあり、部分的にマークされていないので、QuartzService.NET.QObject .__ Parameters.get」を取得が体を宣言していること、体を宣言しなければなりません。では、これを修正する方法は?

+6

'return this .__ Parameters;'は再帰的ではなく戻りませんか? – Powerlord

+2

また、あなたはsetterで 'value'を使用していないことに疑いがあります。また、あなたはpublicフィールドを持っています。 –

+0

エラーがどこから来たのか分かりませんが、getterは無限に再帰的で、setterは 'value'を無視し、最後にバッキングフィールドはpublicです。 – CodesInChaos

答えて

1

にゲッターを無限ループに気づいた変数ではない自分自身を返します。たぶん、あなたは何かをパラメータから戻したいと思うかもしれません。さらに、あなたのセッターはいつも新しい辞書を作成し、それに同じものを追加します。あなたは何をしようとしているのですか?

は、解析funcitonは辞書にそれを格納それを壊し、文字列を取り込み、この

 public string __Parameters 
    { 
     get { return this.recreate(); } 
     set 
     { 
      Parameters = parse(value)); 
     } 
    }  

    public Dictionary<string, string> Parameters; 

のようなものを試してみてください。再作成関数は辞書を使用して文字列を再作成します。あなたが誤ってヌルポインタを取得し、あなたが唯一の私の意見では1つの辞書を必要とするので、いけないよう

public Dictionary<string, string> Parameters = new Dictionary<String,String>(); 

もこれを行います。 (新しい文字列を解析するときにそれをクリアするのを忘れないでください)。

+0

__ParametersがDataContractから設定されたときに解析します。 –

+0

文字列を受け取ると、それらをキー値のペアに分割して保存しますか?そして、ある人がゲッターを呼び出すと、元の文字列を返したいのですか? –

+0

そうです。 –

4

あなたがゲッター

public string __Parameters { 
    get { 
     return this.__Parameters; 
    } 
......... 
+0

+1私もそれを打ちました – psubsee2003

0

あなたがよく定義したゲッターは再帰呼び出しを導入します。

public string __Parameters { 
    get { 
     return this.__Parameters; 
    } 
} 

これを変更してください.__パラメーター;

private string _parameters 
public string __Parameters { 
    get { 
     return this._parameters; 
    } 
} 
関連する問題