Нахождение хостинга PropertyInfo от MethodInfo метода get/метода set

Попробуйте следующее:

<iframe  src="test1.pdf" scrolling="no" frameborder="0" height="100%" width="100%" style="position:absolute; clip:rect (190px,1100px,800px,250px);">

23
задан Mr. Lame 6 February 2009 в 12:39
поделиться

3 ответа

Ecma 335 указывает (но не требует), что компиляторы используют get_/set_ префиксы (глава 22.28). Я не знаю языка, который повреждает ту рекомендацию. Помощь:

public static PropertyInfo GetPropFromMethod(Type t, MethodInfo method) {
  if (!method.IsSpecialName) return null;
  return t.GetProperty(method.Name.Substring(4), 
    BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic);
}
7
ответ дан Hans Passant 29 November 2019 в 02:28
поделиться

Ну, метод позади метода считывания и метода set "реальные" методы.

отслеживание Ре назад к свойству - шаблон (возврат по сравнению со взятием 1 аргумент) поможет сузить его - но необходимо будет назвать GetGetMethod/GetSetMethod на каждом для нахождения свойства.

Вы могли , вероятно , пробуют Name (меньше получает __/set __) - но это чувствует себя хрупким. Вот более длительная версия (нет смысла Name):

static PropertyInfo GetProperty(MethodInfo method)
{
    bool takesArg = method.GetParameters().Length == 1;
    bool hasReturn = method.ReturnType != typeof(void);
    if (takesArg == hasReturn) return null;
    if (takesArg)
    {
        return method.DeclaringType.GetProperties()
            .Where(prop => prop.GetSetMethod() == method).FirstOrDefault();
    }
    else
    {
        return method.DeclaringType.GetProperties()
            .Where(prop => prop.GetGetMethod() == method).FirstOrDefault();
    }
}
17
ответ дан Marc Gravell 29 November 2019 в 02:28
поделиться

Изучите MethodBase.IsSpecialName . Методы, которые не должны быть явно видимыми, такими как средства доступа свойства, методы подписки события и перегрузки оператора, используют этот флаг.

К моему знанию, нет способа найти PropertyInfo, не выполняя итерации через свойства и сравнивая методы.

5
ответ дан Barry Kelly 29 November 2019 в 02:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: