2011-01-11 9 views
0

最新のSVNコミットでDotLiquidを使用していて、次の「簡単な」コードを試しています。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 }))); 

エラーは、RenderAndRethrowErrorsメソッドで発生します。ここで

は、スタックトレースです:DotLiquid.Context.HandleErrorで

(例外例)

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 
.... 

しかし、これはとNullReferenceExceptionが得られます。

ブックは、ドロップを拡張するクラスであり、このメソッドは選択の変更が発生したときにObjectListViewで呼び出されます。

誰でも私をここで助けることができますか?

乾杯、

+0

正確にはどの命令で例外が発生しますか? –

+3

-1 NPE/NREの最初のトラブルシューティングに時間をかけてください。これらの行のほとんどすべてからNREが生成される可能性があります。そのような問題は今のところほとんど無意味です。プログラミングの一部は、好ましくはデバッガを使用して問題を体系的に分離することですが、divide-and-conquerによるコメント、明示的なヌルチェック、および/または「トレース印刷」ステートメントでも可能です。少なくとも、このような質問にはスタックトレースの* top *を含めてください。 –

+0

完了。スタックトレースを投稿しました。 – Trefex

答えて

1

テンプレートと最小限で再現可能なテストケースを用意してください。

編集: 問題は、(IListのような)ヌルのインデックス付きプロパティにアクセスするときだと思います。メインブランチにプッシュされる私のgithubフォークの修正があります。

+0

ねえ、ありがとう。テンプレートは、{{book.Title}}という1つのテストタグを持つ基本的なHTMLです。 Bookでは、多くのプロパティがあります。ここでBookの定義を見ることができます:http://ezcollector.svn.sourceforge.net/viewvc/ezcollector/trunk/solution/Collect-It-All.Entities/Book .cs?revision = 113&view = markup – Trefex

+0

これらのプロパティの一部はレンダラーに渡されたときに実際には "null"になることがあります。ちょうど私にokを知らせますか? – Trefex

+0

nullプロパティは長い間okでしたが、私が修正した問題はnullインデックス付きプロパティに関連していました。修正はメインのgithubリポジトリにありますので、最新のソースをダウンロードできます。 本の定義を見ると、UUIDプロパティのゲッターに問題がありますか? – petrhaus

関連する問題