Заголовок в значительной степени говорит сам за себя, откуда мне знать, получаю ли я сгенерированный компилятором backingfield для {get; set;} свойство?
Я использую этот код для получения моего FieldInfos:
Class MyType
{
private int foo;
public int bar {get; private set; }
}
Type type = TypeOf(MyType);
foreach (FieldInfo fi in type.GetFields(BindingFlags.Instance | BindingFlags.Public | BindingFlags.DeclaredOnly | BindingFlags.NonPublic))
{
// Gets both foo and bar, however bar is called <bar>k__backingfield.
}
поэтому вопрос в том, могу ли я как-то обнаружить, что FieldInfo является опорным полем, не полагаясь на проверку его имени? (Что довольно недокументировано и может быть сломано в следующей версии фреймворка)