Skip to content

Instantly share code, notes, and snippets.

@agross
Created March 20, 2009 15:11
Show Gist options
  • Save agross/82401 to your computer and use it in GitHub Desktop.
Save agross/82401 to your computer and use it in GitHub Desktop.
// Quick hack!
internal static class DPRegistration
{
public static DependencyProperty Register<T>(Expression<Func<T, object>> member)
{
PropertyInfo property = GetProperty(member);
return DependencyProperty.Register(property.Name,
property.PropertyType,
property.DeclaringType);
}
public static PropertyInfo GetProperty(LambdaExpression expression)
{
MemberExpression memberExpression = null;
if (expression.Body.NodeType == ExpressionType.Convert)
{
UnaryExpression body = (UnaryExpression)expression.Body;
memberExpression = body.Operand as MemberExpression;
}
else if (expression.Body.NodeType == ExpressionType.MemberAccess)
{
memberExpression = expression.Body as MemberExpression;
}
if (memberExpression == null)
{
throw new ArgumentException(String.Format(CultureInfo.InvariantCulture,
"Unsupported expression type: {0}",
expression.Body.GetType()),
"expression");
}
return (PropertyInfo) memberExpression.Member;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment