2009-07-12 6 views
0

Ich baue eine Visual Studio-Editor-Erweiterung für meine Django-Rendering-Engine. Ich habe es gerade so angefangen, bis jetzt ist es wirklich einfach und bis jetzt macht es das, was ich von ihm erwarte - Hervorhebung und so. Oder es tat, bis ich begann, Parsing-Logik hinzuzufügen. Ein Teil der Analyse beruht auf regulären Ausdrücken. Und hier ist mein Problem: Egal wie ich es versuche - statische Variablen, Member-Variablen, - alles, jedes Mal, wenn ich neue Regex aufrufen gibt es mir "Object nicht auf eine Instanz festgelegt" Ausnahme. Gibt es ein Problem bei der Verwendung von regulären Ausdrücken (RegEx) in MEF?Regex explodiert in einer Editor-Erweiterung

hier gehen Sie:

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; 
      } 
     } 
    } 

Ein Haltepunkt auf der Linie mit dem Regex-Konstruktor ganz gut getroffen wird. Das nächste F10 gibt die Ausnahme

Antwort

0

Es tut mir leid Jungs, ich fand es heraus, JaredPar Sie hatten Recht - das Problem war unausgeglichen Paren in der Regexp. Die "Diagnose" war zwar ruhig irreführend, gelinde gesagt

1

Nein, es gibt kein Problem mit regulären Ausdrücken in MEF. Das Problem liegt in Ihrem Code.

Basierend auf der Fehlermeldung sieht es so aus, als ob Sie eine Null-Referenzausnahme treffen, wenn Sie versuchen, eine neue Regex zu erstellen. Ohne ein Code-Beispiel zu sehen, ist es nicht einfach zu wissen, was genau falsch läuft.

Können Sie ein Codebeispiel posten?

+0

sicher hier ist sie: Namespace NDjango.Designer.Parsing { [Export (typeof (IParser))] public class Parser: IParser { public List Parse (IEnumerable Vorlage) { var Ergebnis = neue Liste (); Regex tag_re = new Regex ("({{*}.}", RegexOptions.Compiled); return result;} } } Wenn ich auf der neuen Regex Linie den Breakpoint setzen es trifft es ganz gut, aber der nächste F10 - Boom !!! – mfeingold

+0

Sorry für die Formatierung – mfeingold

+0

@mfeingold - Die geeignete Möglichkeit, dieses Code-Snippet zu veröffentlichen wäre, Ihre Frage zu bearbeiten und dort hinzuzufügen. –

Verwandte Themen