2012-04-10 20 views
1

私はAnotherTestの値がTestの値に基づいているシンプルなシナリオを持っています。ほとんどの場合、これは大丈夫ですので、私がTestを提供するときはいつでも簡単にAnotherTestを得ることができます。 Cで同じ値を持つ複数のアクセサ#

public sealed class Transaction { 
    public string Test { get;set; } 
    public string AnotherTest{ 
     get { 
      int indexLiteryS = Test.IndexOf("S"); 
      return Test.Substring(indexLiteryS, 4); 
     } 
    } 
} 

は、しかし、私はまた、 set AnotherTest値のことができるようにと Test価値を提供することなく、それを読むことができるようにしたかったです。これは可能ですか?どのように設定されているかのように2種類の getがあります。私は 3rdTestを作成することができると知っていますが、 AnotherTestと他のフィールドを使用するいくつかのメソッドがあり、そのメソッドのオーバーロードを記述する必要があります。

編集:

私は銀行から提供されたいくつかのファイルを読みました。私はそれを切り取って、Testの値にいくつかのものを入れ、トランザクションの他のフィールド(AnotherTestなど)が自動的に満たされるようにします。 しかし、後で私は良いフォーマットであるSQLからTransactionを読みたいので、残りのフィールドを得るためにTestを提供する必要はありません。これらのフィールドをsetに設定し、getを使用してTestの値を設定することはできません。

+3

あなたの 'AnotherTest'ゲッターは現在再帰的であり、' LiniaTransakcjiString'も言及しています - 実際には 'Test'を使用する2つのゲッターですか? –

+0

はい、どちらもテスト(コピー/貼り付け)ですが、間違った値を挿入しました – MadBoy

+0

それでは、テスト値なしでAnotherTestを設定するのは論理的に*どういう意味でしょうか?これらの特性が表現しようとしているものが実際に示されているわけではありません。 –

答えて

4

はい、そうのように:私は、これはあなたがそれをやりたいと思いゲッターも

return (_anotherTest != null || Test == null) 
    ? _anotherTest 
    : Test.Substring(Test.IndexOf("S"), 4); 
1

として表現することができ

public string Test { get; set; } 

public string AnotherTest 
{ 
    get 
    { 
     if(_anotherTest != null || Test == null) 
     return _anotherTest; 

     int indexLiteryS = Test.IndexOf("S") 
     return Test.Substring(indexLiteryS, 4); 
    } 
    set { _anotherTest = value; } 
} 
private string _anotherTest; 

public sealed class Transaction { 
    public string Test { get;set; } 
    public string AnotherTest{ 
     get { 
      if (_anotherTest != null) 
      { 
       return _anotherTest; 
      } 
      else 
      { 
       int indexLiteryS = Test.IndexOf("S"); 
       return Test.Substring(indexLiteryS, 4); 
      } 
     } 
     set { 
      _anotherTest = value; 
     } 
    } 
    private string _anotherTest = null; 
} 
0

私は問題を解決することを示唆している。

大きなフィールドとその中のサブフィールドを扱っているようですね。代わりに、それらのサブフィールドをフィールドに昇格させ、大きなフィールドがアクセスされたときにそれを構築/分解するのはどうですか?

+0

私は銀行からのファイルに私のために提供された大きなフィールドを解体しています。それがクリーンな形式でSQLに保存されるとき、SQLを読んで、その銀行が情報を送信しているのと同じ型を構築しようとするのは良い考えではないようです。 – MadBoy

関連する問題