Перегрузка метода считывания и метода set вызывает StackOverflow в C#

OpenID все еще так же небезопасен как любой основанный на пароле метод аутентификации там. На самом деле это еще хуже, потому что, если кто-то получает доступ к Вашему OpenID, у них есть больше, чем просто что одна учетная запись теперь. Конечно, существуют также фишинговые атаки, но мы - все опытные программисты, база данных и системные администраторы, таким образом, мы не попались бы на такие вещи, правильно?

Защита аутентификации основана на доверии. Как другие указали, почему Вы доверите третье лицо потенциально уязвимой информации? Несомненно, можно ли настроить сервер OpenID сами, но сколько стычка то, что по сравнению с поддержанием отдельных паролей в нескольких системах? Несомненно, можно создать безопасные пароли, которые долги и полны неалфавитно-цифровых символов, и даже хранят их всех в менеджере паролей (я делаю), но некоторые сайты испорчены в этом, форма восстановления простого пароля может быть заполнена для получения доступа для изменения пароля.

я, вероятно, был бы склонен поддерживать и даже проповедовать христианство OpenID, если бы он действительно защищал основанную на закрытом ключе аутентификацию, а-ля SSH или PGP. Возможно, это - вопрос поставщика, предлагающего такой метод - я [еще] не изучил его.

Наконец, в то время как все мы доверяем OpenID достаточно для использования его для аутентификации на Переполнении стека, мой OpenID является "предметом одноразового использования", и не как я использую это в качестве профессионального инструмента разработки репутации (т.е., мое настоящее имя не включено;-)). Я уверен, что я не единственный (как прохладный и потрясающий, как этот сайт!).

5
задан Nap 17 September 2009 в 09:53
поделиться

4 ответа

Да, у вас нет резервного поля ... вот как вы должны это делать:

 private MyEnumType data;

public MyEnumType Data 
{
  get
  {
    return data;
  }
  set 
  {
    data = value;
  }
}

Что происходит, так это то, что вы ссылаетесь на свойство чтобы вернуть себя, это вызывает бесконечный цикл попыток доступа к собственному значению. Следовательно, StackOverFlow.

В вашем случае, когда вы не добавляете никакой дополнительной логики в методы get и set, вы также можете использовать автоматическое свойство. Это просто определяется так:

public MyEnumType Data 
{
  get;
  set;
}
28
ответ дан 18 December 2019 в 05:24
поделиться

Вы ссылаетесь на само свойство внутри вашего геттера и сеттера, что вызывает бесконечную рекурсию ( переполнение стека ). Это было бы более очевидно, если бы вы использовали стандартные соглашения об именах (Data).
Попробуйте что-нибудь вроде:

private MyEnumType _data;

public MyEnumType Data 
{
  get { return _data; }
  set { _data = value; }
}
6
ответ дан 18 December 2019 в 05:24
поделиться
public class MyClass
{
    string propertyString;

    public string MyPropertyString
    {
        get
        {
            return propertyString;
        }
        set
        {
            propertyString = value;
        }
    }
}

Имя свойства должно отличаться от имени элемента.

3
ответ дан 18 December 2019 в 05:24
поделиться

Поместите точку останова в установщик / получатель и выполните отладку, убедившись, что вы используете step into (F11), а не переходите - это должно помочь объяснить, что происходит.

0
ответ дан 18 December 2019 в 05:24
поделиться
Другие вопросы по тегам:

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