Adding two missing properties to ContentTypeBase.

Creating mappers for the few types that supports "db queries" through the repository U4-978
This commit is contained in:
sitereactor
2012-10-23 11:29:16 -02:00
parent ee96ced595
commit a53dde8a20
19 changed files with 650 additions and 52 deletions

View File

@@ -82,6 +82,43 @@ namespace Umbraco.Core
});
}
public static MemberInfo FindProperty(LambdaExpression lambdaExpression)
{
Expression expressionToCheck = lambdaExpression;
bool done = false;
while (!done)
{
switch (expressionToCheck.NodeType)
{
case ExpressionType.Convert:
expressionToCheck = ((UnaryExpression)expressionToCheck).Operand;
break;
case ExpressionType.Lambda:
expressionToCheck = ((LambdaExpression)expressionToCheck).Body;
break;
case ExpressionType.MemberAccess:
var memberExpression = ((MemberExpression)expressionToCheck);
if (memberExpression.Expression.NodeType != ExpressionType.Parameter &&
memberExpression.Expression.NodeType != ExpressionType.Convert)
{
throw new ArgumentException(string.Format("Expression '{0}' must resolve to top-level member and not any child object's properties. Use a custom resolver on the child type or the AfterMap option instead.", lambdaExpression), "lambdaExpression");
}
MemberInfo member = memberExpression.Member;
return member;
default:
done = true;
break;
}
}
throw new Exception("Configuration for members is only supported for top-level individual members on a type.");
}
public static IDictionary<string, object> GetMethodParams<T1, T2>(Expression<Func<T1, T2>> fromExpression)
{
if (fromExpression == null) return null;