예제 #1
0
 /// <summary>
 /// Sets the member.
 /// </summary>
 /// <param name="obj">The obj.</param>
 /// <param name="memberName">Name of the member.</param>
 /// <param name="memberValue">The member value.</param>
 /// <param name="accessorFactory">The accessor factory.</param>
 public static void SetMember(object obj, string memberName, object memberValue, AccessorFactory accessorFactory)
 {
     try
     {
         if (memberName.IndexOf("[") > -1)
         {
             SetArrayMember(obj, memberName, memberValue, accessorFactory);
         }
         else
         {
             if (obj is IDictionary)
             {
                 ((IDictionary)obj)[memberName] = memberValue;
             }
             else
             {
                 ISetter setter = accessorFactory.CreateSetter(obj.GetType(), memberName);
                 if (setter == null)
                 {
                     throw new ProbeException("No Set method for member " + memberName + " on instance of " + obj.GetType().Name);
                 }
                 try
                 {
                     setter.SetValue(obj, null, memberValue);
                 }
                 catch (Exception ex)
                 {
                     throw new ProbeException(ex);
                 }
             }
         }
     }
     catch (ProbeException pe)
     {
         throw pe;
     }
     catch (Exception e)
     {
         throw new ProbeException("Could not Get property '" + memberName + "' for " + obj.GetType().Name + ".  Cause: " + e.Message, e);
     }
 }