Using reflection, how do I detect properties that have setters?

I have this code to loop through an object and get all of its properties through reflection:

foreach (var propertyInfo in typeof(TBase).GetProperties(BindingFlags.Public | BindingFlags.Instance))
{
    var oldValue = propertyInfo.GetValue(oldVersion, null);
}

How can I do a check to only look at properties that have a "Set" on them? (I want to ignore read-only values - just "Get".)


Solution 1:

PropertyInfo.CanWrite (documentation)

or

PropertyInfo.GetSetMethod (documentation)

Solution 2:

propertyInfo.GetSetMethod() != null