Ослабьте доступ на вашем статическом FooProperty
:
//access FooProperty from inside the assembly where it is defined
internal static PropertyInfo<bool> FooProperty=
RegisterProperty<bool>(c => c.Foo, "Foo Friendly Name");
или
//access FooProperty from anywhere
public static PropertyInfo<bool> FooProperty=
RegisterProperty<bool>(c => c.Foo, "Foo Friendly Name");
Затем получите доступ к нему вне его класса:
string fooName = FooClass.FooProperty.Name;