Nano Hash - криптовалюты, майнинг, программирование

Ссылка на объект не установлена ​​на экземпляр objectError?

Хорошо, я совершенно новичок в C # и пытаюсь отладить ошибку. В основном я пытаюсь создать EventReceiver для списка SharePoint ... это код, который выдает мне ошибку ссылки на объект, когда я отлаживаю:

   public override void ItemAdding(SPItemEventProperties properties)
   {
       base.ItemAdding(properties);

       SPListItem item = properties.ListItem;

       if (item["Name"] == null)
           return; //or better yet, log 

       string oldFileName = item["Name"].ToString();

Что я делаю, так это вхожу в режим отладки и выбираю добавление файла в библиотеку SharePoint (это в событии ItemAdding), теперь эта ошибка отображается после того, как я выбираю файл, который хочу загрузить, есть идеи, почему?

Спасибо за любую помощь!


  • Вы должны пометить этот вопрос знаком sharepoint 07.09.2012
  • Вы уверены, что properties.ListItem не равно нулю? 07.09.2012

Ответы:


1

Это не «ошибка ссылки на объект», это NullReferenceException, вызванная тем фактом, что вы пытаетесь получить доступ к оператору индекса item, то есть null.

Вы могли узнать это, установив точку останова в строке оператора if и наведя указатель мыши на различные переменные.

Чтобы исправить это, убедитесь, что properties.ListItem содержит ненулевое значение, или вставьте еще одну проверку в свой if:

if (item == null || item["Name"] == null)
06.09.2012
  • Спасибо! Кажется, это сработало, я попытался использовать точки останова, однако, как только я вхожу в режим отладки, моя точка останова становится желтой, и при наведении на нее я получаю сообщение «Точка останова не будет достигнута». Для этого документа не загружены символы. Понятия не имею, почему это так? 07.09.2012
  • @TudorHofnar попытается сохранить его работающим, в конечном итоге символы будут загружены и будет достигнута точка останова. 07.09.2012
  • Есть соответствующий вопрос SO, который предлагает несколько возможных решений. 07.09.2012
  • @StanR. Я оставил его работать примерно на 10 минут, а точки останова все еще не загружены (пока я отвечал на электронные письма, ха-ха) 07.09.2012
  • @codesparkle Я прочитал эту ветку и попробовал несколько вариантов, но ничего не сработало. Щелкните решение правой кнопкой мыши - ›Свойства. Найдите в разделе« Общие свойства »-› Проект запуска. Выберите несколько запускаемых проектов, выберите действие «Начать» для проектов, которые необходимо отладить. Это решение, в частности, я не могу выполнить, так как я не могу найти общие свойства, я делаю все это в проекте Even Receiver. Есть идеи, как я могу это попробовать? 07.09.2012

  • 2

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

           SPListItem item = properties.ListItem;
    
           if (item == null || item["Name"] == null) 
               return; //or better yet, log
    
    06.09.2012

    3
    SPListItem item = properties.ListItem;
    System.Debug.Assert(item != null, "item is null.");
    
    
    if (item["Name"] == null) --DEBUGGER STOPS HERE
        return; //or better yet, log 
    

    кажется, что item или более конкретный properties.ListItem имеет значение null! Поскольку item - это просто ссылка.

    06.09.2012
  • properties.ListItem и item - это оба справочника. 07.09.2012
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..