All of these are not needed to enumerate but rather to access properties properly. For example, to set a value of the property on given instance, you need SetProperty flag.
Base b;
typeof(Base).InvokeMember( "I",
BindingFlags.SetProperty|BindingFlags.Public|BindingFlags.Instance,
...,
b, new object[] { newvalue } );
but to get the value of this property, you would need to use the GetProperty: flag.
Base b;
int val = (int)typeof(Base).InvokeMember( "I",
BindingFlags.GetProperty|BindingFlags.Public|BindingFlags.Instance,
...,
b, null);