2011-01-11 5 views
0

Ich verwende DotLiquid auf dem neuesten SVN Commit und versuche den folgenden "einfachen" Code.C# DotLiquid NullReferenceException

Template.NamingConvention = new CSharpNamingConvention(); 
Book selectedBook = (Book)this.booksList.SelectedObject; 

string pathToTemplate = "..\\..\\..\\Resources\\templates\\white.html"; 
string res = ""; 

res = File.ReadAllText(pathToTemplate); 

// Parse and compile the template 
Template template = Template.Parse(res); 
Console.WriteLine(template.RenderAndRethrowErrors(Hash.FromAnonymousObject(new { book = selectedBook }))); 

Der Fehler tritt in der RenderAndRethrowErrors-Methode auf.

Hier ist ein Stack-Trace:

bei DotLiquid.Context.HandleError (Exception ex)

at DotLiquid.Block.<>c__DisplayClass1.<RenderAll>b__0(Object token) 

    at System.Collections.Generic.List`1.ForEach(Action`1 action) 

    at DotLiquid.Block.RenderAll(List`1 list, Context context, StringBuilder result) 

    at DotLiquid.Block.Render(Context context, StringBuilder result) 

    at DotLiquid.Template.RenderInternal(Context context, Hash registers, IEnumerable`1 filters) 

    at DotLiquid.Template.Render(Hash localVariables, IEnumerable`1 filters, Hash registers) 

    at DotLiquid.Template.RenderAndRethrowErrors(Hash hash) 

    at Collect_It_All.CIA_Main.booksList_SelectedIndexChanged(Object sender, EventArgs e) in D:\Documents\Dev\ezcollector\solution\Collect-It-All\CIA_Main.cs:line 298 

    at BrightIdeasSoftware.ObjectListView.OnSelectedIndexChanged(EventArgs e) in D:\Documents\Dev\ezcollector\solution\ObjectListView\ObjectListView.cs:line 7350 
.... 

Jedoch ergibt dies eine Nullreferenceexception.

Das Buch ist eine Klasse, die Drop erweitert, und diese Methode wird in einer ObjectListView aufgerufen, wenn eine Auswahländerung auftritt.

Kann mir hier jemand helfen?

Cheers,

+0

genau welcher Befehl ergibt die Ausnahme? –

+3

-1 Nehmen Sie sich Zeit, um zuerst die NPE/NRE-Fehler zu beheben. Ein NRE könnte aus fast allen dieser Linien erzeugt werden - die Frage, wie sie jetzt ist, ist daher fast nutzlos. Ein Teil der Programmierung besteht darin, ein Problem systematisch zu isolieren, vorzugsweise mit einem Debugger, aber es ist auch möglich mit Divide-and-Conquer-Kommentaren, expliziten Null-Checks und/oder "Trace-Print" -Anweisungen. Geben Sie in solchen Fragen zumindest das * top * eines Stack-Trace ein. –

+0

Fertig. Hat den Stack-Trace gepostet. – Trefex

Antwort

1

Bitte geben Sie die Vorlage und einen minimalen und reproduzierbaren Testfall.

Edit: Ich denke, das Problem ist beim Zugriff auf eine Null indizierte Eigenschaft (wie eine IList). Ich habe eine Reparatur an meiner Github-Gabel, die ebenfalls in den Hauptzweig geschoben wird.

+0

Hey, danke dafür. Die Vorlage besteht aus einfachem HTML mit nur einem Test-Tag namens {{book.Title}}. In Book gibt es viele Eigenschaften, wenn Sie möchten, können Sie sich die Definition von Book hier ansehen: http://ezcollector.svn.sourceforge.net/viewvc/ezzllector/trunk/solution/Collect-It-All.Entities/Book .cs? revision = 113 & view = markup – Trefex

+0

Einige dieser Eigenschaften sind möglicherweise "null", wenn sie an den Renderer übergeben werden. Wenn dies ein Problem ist, können wir das natürlich beheben. Sag mir Bescheid, ok? – Trefex

+0

Null-Eigenschaften waren für eine lange Zeit in Ordnung, das Problem, das ich behoben habe, war mit null indizierten Eigenschaften verwandt. Das Update befindet sich im Haupt-Repository von github, sodass Sie jetzt die neuesten Quellen herunterladen können. Betrachtet man die Definition des Buches, könnte es ein Problem mit UUID-Eigenschaft Getter sein? – petrhaus

Verwandte Themen