Guest User

Untitled

a guest
Jun 25th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.80 KB | None | 0 0
  1. GetSortingInfo<User>(u => u.UserId);
  2.  
  3. public static RouteValueDictionary GetInfo<T>(this HtmlHelper html,
  4. Expression<Func<T, object>> action) where T : class
  5. {
  6. var expression = GetMemberInfo(action);
  7. string name = expression.Member.Name;
  8.  
  9. return GetInfo(html, name);
  10. }
  11.  
  12. private static MemberExpression GetMemberInfo(Expression method)
  13. {
  14. LambdaExpression lambda = method as LambdaExpression;
  15. if (lambda == null)
  16. throw new ArgumentNullException("method");
  17.  
  18. MemberExpression memberExpr = null;
  19.  
  20. if (lambda.Body.NodeType == ExpressionType.Convert)
  21. {
  22. memberExpr =
  23. ((UnaryExpression)lambda.Body).Operand as MemberExpression;
  24. }
  25. else if (lambda.Body.NodeType == ExpressionType.MemberAccess)
  26. {
  27. memberExpr = lambda.Body as MemberExpression;
  28. }
  29.  
  30. if (memberExpr == null)
  31. throw new ArgumentException("method");
  32.  
  33. return memberExpr;
  34. }
  35.  
  36. public PropertyInfo GetPropertyInfo<TSource, TProperty>(
  37. TSource source,
  38. Expression<Func<TSource, TProperty>> propertyLambda)
  39. {
  40. Type type = typeof(TSource);
  41.  
  42. MemberExpression member = propertyLambda.Body as MemberExpression;
  43. if (member == null)
  44. throw new ArgumentException(string.Format(
  45. "Expression '{0}' refers to a method, not a property.",
  46. propertyLambda.ToString()));
  47.  
  48. PropertyInfo propInfo = member.Member as PropertyInfo;
  49. if (propInfo == null)
  50. throw new ArgumentException(string.Format(
  51. "Expression '{0}' refers to a field, not a property.",
  52. propertyLambda.ToString()));
  53.  
  54. if (type != propInfo.ReflectedType &&
  55. !type.IsSubclassOf(propInfo.ReflectedType))
  56. throw new ArgumentException(string.Format(
  57. "Expresion '{0}' refers to a property that is not from type {1}.",
  58. propertyLambda.ToString(),
  59. type));
  60.  
  61. return propInfo;
  62. }
  63.  
  64. var propertyInfo = GetPropertyInfo(someUserObject, u => u.UserID);
  65.  
  66. public static RouteValueDictionary GetInfo<T,P>(this HtmlHelper html, Expression<Func<T, P>> action) where T : class
  67. {
  68. var expression = (MemberExpression)action.Body;
  69. string name = expression.Member.Name;
  70.  
  71. return GetInfo(html, name);
  72. }
  73.  
  74. GetInfo((User u) => u.UserId);
  75.  
  76. public static void PrintName(Expression<Func<object>> exp)
  77. {
  78. string name = "";
  79. string val = "";
  80. MemberExpression body = exp.Body as MemberExpression;
  81. if (body == null) {
  82. UnaryExpression ubody = (UnaryExpression)exp.Body;
  83. body = ubody.Operand as MemberExpression;
  84. name = body.Member.Name;
  85. } else {
  86. name = body.Member.Name;
  87. }
  88. }
  89.  
  90. public static void SetModifiedProperty<T>(this System.Data.Objects.ObjectStateEntry state, Expression<Func<T>> action)
  91. {
  92. var body = (MemberExpression)action.Body;
  93. string propertyName = body.Member.Name;
  94.  
  95. state.SetModifiedProperty(propertyName);
  96. }
Add Comment
Please, Sign In to add comment