title: how to get both fields and properties in single call via reflection?
body: <p>I apologize if this is covered somewhere. I did research before posting!</p>
  
  <p>okay, so question...I'm using GetType( ).GetProperties, but it isn't returning simple instance fields, which don't have get/set on them...so I used .GetFields, which finds them, but I want to get a simple single object to get/set a value on without flipping between fields and properties...is this possible?</p>
  
  <p>my current code works on PropertyInfo, which is working great, but that isn't for fields I guess?</p>
  
  <p>[edit] 
  <strong>this is the solution I came up with, which is working good. thanks everyone....</strong></p>
  
  <pre><code>    // some logic borrowed from James Newton-King, http://www.newtonsoft.com
      public static void SetValue(this MemberInfo member, object property, object value)
      {
          if (member.MemberType == MemberTypes.Property)
              ((PropertyInfo)member).SetValue(property, value, null);
          else if (member.MemberType == MemberTypes.Field)
              ((FieldInfo)member).SetValue(property, value);
          else
              throw new Exception("Property must be of type FieldInfo or PropertyInfo");
      }
  
      public static object GetValue(this MemberInfo member, object property)
      {
          if (member.MemberType == MemberTypes.Property)
              return ((PropertyInfo)member).GetValue(property, null);
          else if (member.MemberType == MemberTypes.Field)
              return ((FieldInfo)member).GetValue(property);
          else
              throw new Exception("Property must be of type FieldInfo or PropertyInfo");
      }
  
      public static Type GetType(this MemberInfo member)
      {
          switch (member.MemberType)
          {
              case MemberTypes.Field:
                  return ((FieldInfo)member).FieldType;
              case MemberTypes.Property:
                  return ((PropertyInfo)member).PropertyType;
              case MemberTypes.Event:
                  return ((EventInfo)member).EventHandlerType;
              default:
                  throw new ArgumentException("MemberInfo must be if type FieldInfo, PropertyInfo or EventInfo", "member");
          }
      }
  </code></pre>