0

CRM 2011 のカスタム ワークフロー アクティビティで、呼び出しエンティティの属性を使用してロジックを実行しようとしています。特定の属性が null かどうかの判断に問題があります。GetAttributeValue と Attributes コレクションのすべての組み合わせを試してみましたが、属性に null 値がある場合、指定されたキャストが有効でないか、オブジェクト参照がオブジェクトのインスタンスに設定されていないというエラーが常に発生するようです。アクセスしようとしています。nullの可能性がある属性にアクセスするための正しい方法を知っている人はいますか? この例では、Guid/Entity Reference タイプの属性を使用しています。

4

2 に答える 2

0

この構文は私にとってはうまくいきました:

//if current outside counsel not null, grab GUID value
  if (thisCase.lgl_outsidecounselid != null)
  {
  currentOCGUID = thisCase.lgl_outsidecounselid.Id;
  }
//it's null, set Guid to Guid.empty
  else
  {
  currentOCGUID = Guid.Empty;
  }
于 2013-09-27T18:38:36.343 に答える
0

探している特定の属性が属性コレクションに含まれているかどうかはいつでも確認できますが、その必要さえないはずです。null 非許容型 (Guid、DateTime など) はすべて null 許容型として Attributes コレクションに格納されており、それがおそらく問題です。次のようなことを試してください(レイトバウンドを想定):

var isValid = entity.GetAttributeValue<bool?>("new_IsValid");

CRM は、null 非許容値を返すことはありません。null と思われるもの (bool、DateTime、int など) でさえ、null 許容の等価物として返されます。値が null でない場合でも、null 非許容のキャストは成功しますが、値が null の場合は null 参照エラーが発生します。

object a = new bool?(true);
bool value = ((bool)a); // Works 
object b = new bool?();
bool value = ((bool)b); // Null Ref Error
于 2013-09-25T18:34:12.107 に答える