Finding the hosting PropertyInfo from the MethodInfo of getter/setter

Well, the method behind a getter and setter are “real” methods.

Re tracking back to a property – the pattern (return vs take 1 arg) will help narrow it – but you’ll have to call GetGetMethod/GetSetMethod on each to find the property.

You could probably try the Name (less get__/set__) – but that feels brittle. Here’s the longer version (no use of Name):

static PropertyInfo GetProperty(MethodInfo method)
{
    bool takesArg = method.GetParameters().Length == 1;
    bool hasReturn = method.ReturnType != typeof(void);
    if (takesArg == hasReturn) return null;
    if (takesArg)
    {
        return method.DeclaringType.GetProperties()
            .Where(prop => prop.GetSetMethod() == method).FirstOrDefault();
    }
    else
    {
        return method.DeclaringType.GetProperties()
            .Where(prop => prop.GetGetMethod() == method).FirstOrDefault();
    }
}

Leave a Comment