public bool GetValue(object target, out object outValue) { switch (type) { case TCType.Field: outValue = fieldInfo.GetValue(target); return(true); case TCType.Property: outValue = propInfo.GetValue(target); return(true); case TCType.List: if (listIndex >= 0 && listIndex < list.Count) { outValue = list[listIndex]; return(true); } break; case TCType.ContentAccessor: outValue = accessor.GetValue(); return(true); default: break; } outValue = null; return(false); }