2010-12-21 8 views
1

値を設定する際に私にstackoverflow例外を与える次のメソッドがあります。私はそれに踏み込むことはできませんし、アプリケーションをデバッグするだけで数秒後にクラッシュします。ここでは、コードバイナリ値を設定するときのプロパティの例外

public byte[] ImageTIFF 
{ 
    get 
    { 
     try 
     { 
      string filePath = ImageTIFFDir + ImageId + ".TIFF"; 

      if (File.Exists(filePath)) 
      { 
       return File.ReadAllBytes(ImageTIFFDir + ImageCollectionId + ".TIFF"); 
      } 
      else 
      { 
       return null;   
      } 
     } 
     catch (Exception e) 
     { 
      Logger.log("Can't read TIFF image from file.", e); 
      throw; 
     } 
    } 
    set 
    { 
     try 
     { 
      ImageTIFF = value; 
     } 
     catch (Exception e) 
     { 
      Logger.log("Can't set image TIFF.", e); 
      throw; 
     } 

    } 
} 

は、このエクスポート時に呼び出されると、それは最初の呼び出しに失敗している:

someImage.ImageTIFF = File.ReadAllBytes(imageName); 
+0

returnPath節でfilePathを再利用できることに気がつきましたが、これは問題ありません。 –

答えて

3

変更するには、のためにバッキングストアを必要とする

private byte[] m_ImageTIFF; 
public byte[] ImageTIFF 
{ 
    get{...} 
    set { m_ImageTIFF = value;} 
} 

にコードプロパティ。あなたが設定したブロック

ImageTIFF = value; 

でプロパティ自体を設定している、これは

+0

これを今から試してみてください。すべてありがとうございました –

+0

これはうまくいきました。 –

3

byte[]配列変数を作成し、この変数セットのブロックに及びGETブロックのリターンに設定してください。ここで

2

あなたはすでにあるプロパティに値を設定してみてください。

try 
{ 
    ImageTIFF = value; 
} 

あなたは、そのプロパティの後ろにクラスメンバを持っている必要があります。

byte[] _imageTIFF 

し、それを

set 
{ 
    try 
    { 
     _imageTIFF = value; 
    } 
    catch (Exception e) 
    { 
     Logger.log("Can't set image TIFF.", e); 
     throw; 
    } 
} 
2

を設定するような何かあなたがプロパティの値を設定内のプロパティの値を設定している...再帰、私の友人:

ImageTIFF = value; 

あなたは穴に別の変数valueを作成する必要があります。プロパティは変数ではなく、単なるラッパーです。

関連する問題