0

そのため、含まれている値に基づいてオブジェクトのプロパティを動的に更新する必要がある状況があります。以下のケースでは、条件が true の場合、現在の値の最初の 2 文字を別の文字列に置き換えて値を更新する必要があります。

PersonDetail.EvaluateConditionalRule("ID", 
                    "((ID.Length > Convert.ToInt32(@0) ) AND ID.Substring(Convert.ToInt32(@1), Convert.ToInt32(@2)) == @3 )",
                     new[] { "1", "0", "2", "SS" }, " ID = (@0  + ID.Substring(Convert.ToInt32(@1))) " , new[] { "98", "2" });


   public static void EvaluateConditionalRule(this PersonDetail  Detail, String PropertyToEvaluate,
            String ConditionalExpression, String[] parameters, String IfTrueExpression,String[] IfTrueExpreassionparameters  )
          {
               var property =  Detail.GetType().GetProperties().Where(x => x.Name == PropertyToEvaluate).FirstOrDefault();
               if (property == null)
                    throw new InvalidDataException(String.Format("Please specify a valid {0} property name for the evaluation.",  Detail.GetType()));
               //put together the condition like so 

               if (new[] {  Detail }.AsQueryable().Where(ConditionalExpression, parameters).Count() > 0 && IfTrueExpression != null)
               {
                    var result = new[] {  Detail }.AsQueryable().Select(IfTrueExpression, IfTrueExpreassionparameters);

                  //Stuck Here as result does not contain expected value 

                    property.SetValue( Detail,result , null);
               }
          }

本質的に私が望むのは、これを与えられた式を実行できるようにすることです.部分文字列置換式が正しく評価されるための適切な形式を持っているとは思いません. 上記から欲しいのは次のようなものです

ID = "98"+  ID.Substring(2);

どんな助けでも大歓迎です。ありがとう

4

2 に答える 2