Regex взрывается в расширении редактора - PullRequest
0 голосов
/ 12 июля 2009

Я создаю расширение редактора Visual Studio для моего движка рендеринга Django. Я только начал это до сих пор, что это действительно просто, и пока он делает то, что я от него ожидаю - выделение и тому подобное. Или до тех пор, пока я не начал добавлять логику разбора. Часть синтаксического анализа опирается на регулярные выражения. И вот моя проблема: Независимо от того, как я стараюсь - статические переменные, переменные-члены - что угодно, каждый раз, когда я вызываю новый Regex, это дает мне исключение «Объект не установлен в экземпляр». Есть ли проблема с использованием регулярных выражений (RegEx) в MEF?

здесь вы идете:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.ComponentModel.Composition;
    using System.Text.RegularExpressions;

    namespace NDjango.Designer.Parsing
    {
        public interface IParser
        {
             List<Token> Parse(IEnumerable<string> template);
        }

        [Export(typeof(IParser))]
        public class Parser : IParser
        {
            public List<Token> Parse(IEnumerable<string> template)
            {
                var result = new List<Token>();
                Regex tag_re = new Regex("({{.*}}", RegexOptions.Compiled);
                return result;
            }
        }
    }

Точка останова на строке с конструктором Regex попадает просто отлично. Следующий F10 дает исключение

Ответы [ 2 ]

1 голос
/ 12 июля 2009

Нет, нет проблем с использованием регулярных выражений в MEF. Проблема в вашем коде.

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

Можете ли вы опубликовать пример кода?

0 голосов
/ 12 июля 2009

Прошу прощения, ребята, я понял это, ДжаредПар, вы были правы - проблема была в неуравновешенной проблеме в регулярном выражении «Диагностика», тем не менее, вводила в заблуждение, если не сказать больше

...