1

私は本当にこれを理解することはできません!(可能であれば)。WCF サービスから製品情報を受信して​​います。製品のデータ契約には、文字列として定義されている (実際には整数である) メンバーがいくつかありますが、それらを整数として処理したいと考えています。

クライアント側のコントラクトのデータ型を string から int に変更すると、問題は解決します。ただし、一部の製品には string.Empty 値があり、int に逆シリアル化することはできません。とにかくこのあたりはありますか?逆シリアル化後に結果セットを変換したくない...

4

1 に答える 1

1

取得する DataContract クラスは常に部分クラスであるため、単純に 2 つ目の部分クラスを追加して、"PropertyAsInt" プロパティを提供することができます。

このようなもの:

public partial class Product
{
   public int ProductNumberAsInt
   {
       get 
       { 
          if(!string.IsNullOrEmpty(ProductNumber))
          {    
             int result = -1;

             if(int.TryParse(ProductNumber, out result)
                return result;
             else
                return -1;
          }

          return 0;
       }
    }
 }

したがって、単純にプロパティを定義するだけProductNumberAsIntで、 と呼ばれる基になる文字列プロパティを検査できますProductNumbernullまたはの場合string.Emptyは、デフォルト値 (-1 または 0 など) を返すだけです。

null/空でない場合は、Int への変換を試みることができます。成功した場合はその int を返します。それ以外の場合は、別のインジケーターを返します (ここでも、あなたにとって意味のあるものを選択してください、-1、0 を選択してください)。

そうすれば、WCF のデータ コントラクトをいじったり、面倒な手動ハッキングを行ったりする必要がなくなり、必要に応じて追加のプロパティを微調整することができます。

マルク

于 2009-10-09T14:47:44.827 に答える