Take first matching property from list of properties

If an object has both generic and non-generic versions of the same property, they will have the same property name, causing an AmbiguousMatchException to be thrown. To prevent this, iterate all properties matching the binding flag and assign the first property with the specified name.