Skip to content

Commit 3292b18

Browse files
committed
Fix for setting a custom namespace
If the namespace is changed in the options, the Load fails as its hardcoded to 'TemplateNamespace'. This passes the namespace through. I've used overrides so it can be called externally.
1 parent ce9feec commit 3292b18

File tree

4 files changed

+57
-19
lines changed

4 files changed

+57
-19
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
using Microsoft.VisualStudio.TestTools.UnitTesting;
5+
using RazorEngineCore.Tests.Models;
6+
7+
namespace RazorEngineCore.Tests
8+
{
9+
[TestClass]
10+
public class TestTemplateNamespace
11+
{
12+
[TestMethod]
13+
public void TestSettingTemplateNamespace()
14+
{
15+
RazorEngine razorEngine = new RazorEngine();
16+
17+
IRazorEngineCompiledTemplate initialTemplate = razorEngine.Compile("@{ var message = \"OK\"; }@message",
18+
builder => { builder.Options.TemplateNamespace = "Test.Namespace"; });
19+
20+
var result = initialTemplate.Run();
21+
22+
Assert.AreEqual("OK", result);
23+
}
24+
25+
[TestMethod]
26+
public void TestSettingTemplateNamespaceT()
27+
{
28+
RazorEngine razorEngine = new RazorEngine();
29+
30+
var initialTemplate = razorEngine.Compile<TestTemplate2>("@{ var message = \"OK\"; }@message",
31+
builder => { builder.Options.TemplateNamespace = "Test.Namespace"; });
32+
33+
var result = initialTemplate.Run(a => { });
34+
35+
Assert.AreEqual("OK", result);
36+
}
37+
}
38+
}

RazorEngineCore/RazorEngine.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public IRazorEngineCompiledTemplate<T> Compile<T>(string content, Action<IRazorE
2525

2626
MemoryStream memoryStream = this.CreateAndCompileToStream(content, compilationOptionsBuilder.Options);
2727

28-
return new RazorEngineCompiledTemplate<T>(memoryStream);
28+
return new RazorEngineCompiledTemplate<T>(memoryStream, compilationOptionsBuilder.Options.TemplateNamespace);
2929
}
3030

3131
public Task<IRazorEngineCompiledTemplate<T>> CompileAsync<T>(string content, Action<IRazorEngineCompilationOptionsBuilder> builderAction = null) where T : IRazorEngineTemplate
@@ -42,7 +42,7 @@ public IRazorEngineCompiledTemplate Compile(string content, Action<IRazorEngineC
4242

4343
MemoryStream memoryStream = this.CreateAndCompileToStream(content, compilationOptionsBuilder.Options);
4444

45-
return new RazorEngineCompiledTemplate(memoryStream);
45+
return new RazorEngineCompiledTemplate(memoryStream, compilationOptionsBuilder.Options.TemplateNamespace);
4646
}
4747

4848
public Task<IRazorEngineCompiledTemplate> CompileAsync(string content, Action<IRazorEngineCompilationOptionsBuilder> builderAction = null)

RazorEngineCore/RazorEngineCompiledTemplate.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,24 @@
66
namespace RazorEngineCore
77
{
88
public class RazorEngineCompiledTemplate : IRazorEngineCompiledTemplate
9-
{
9+
{
1010
private readonly MemoryStream assemblyByteCode;
1111
private readonly Type templateType;
1212

13-
internal RazorEngineCompiledTemplate(MemoryStream assemblyByteCode)
13+
internal RazorEngineCompiledTemplate(MemoryStream assemblyByteCode, string templateNamespace)
1414
{
1515
this.assemblyByteCode = assemblyByteCode;
1616

1717
Assembly assembly = Assembly.Load(assemblyByteCode.ToArray());
18-
this.templateType = assembly.GetType("TemplateNamespace.Template");
18+
this.templateType = assembly.GetType($"{templateNamespace}.Template");
1919
}
2020

21-
public static IRazorEngineCompiledTemplate LoadFromFile(string fileName)
21+
public static IRazorEngineCompiledTemplate LoadFromFile(string fileName, string templateNamespace = "TemplateNamespace")
2222
{
23-
return LoadFromFileAsync(fileName: fileName).GetAwaiter().GetResult();
23+
return LoadFromFileAsync(fileName: fileName, templateNamespace: templateNamespace).GetAwaiter().GetResult();
2424
}
2525

26-
public static async Task<IRazorEngineCompiledTemplate> LoadFromFileAsync(string fileName)
26+
public static async Task<IRazorEngineCompiledTemplate> LoadFromFileAsync(string fileName, string templateNamespace = "TemplateNamespace")
2727
{
2828
MemoryStream memoryStream = new MemoryStream();
2929

@@ -38,21 +38,21 @@ public static async Task<IRazorEngineCompiledTemplate> LoadFromFileAsync(string
3838
await fileStream.CopyToAsync(memoryStream);
3939
}
4040

41-
return new RazorEngineCompiledTemplate(memoryStream);
41+
return new RazorEngineCompiledTemplate(memoryStream, templateNamespace);
4242
}
4343

4444
public static IRazorEngineCompiledTemplate LoadFromStream(Stream stream)
4545
{
4646
return LoadFromStreamAsync(stream).GetAwaiter().GetResult();
4747
}
4848

49-
public static async Task<IRazorEngineCompiledTemplate> LoadFromStreamAsync(Stream stream)
49+
public static async Task<IRazorEngineCompiledTemplate> LoadFromStreamAsync(Stream stream, string templateNamespace = "TemplateNamespace")
5050
{
5151
MemoryStream memoryStream = new MemoryStream();
5252
await stream.CopyToAsync(memoryStream);
5353
memoryStream.Position = 0;
5454

55-
return new RazorEngineCompiledTemplate(memoryStream);
55+
return new RazorEngineCompiledTemplate(memoryStream, templateNamespace);
5656
}
5757

5858
public void SaveToStream(Stream stream)

RazorEngineCore/RazorEngineCompiledTemplateT.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,20 @@ public class RazorEngineCompiledTemplate<T> : IRazorEngineCompiledTemplate<T> wh
1010
private readonly MemoryStream assemblyByteCode;
1111
private readonly Type templateType;
1212

13-
internal RazorEngineCompiledTemplate(MemoryStream assemblyByteCode)
13+
internal RazorEngineCompiledTemplate(MemoryStream assemblyByteCode, string templateNamespace)
1414
{
1515
this.assemblyByteCode = assemblyByteCode;
1616

1717
Assembly assembly = Assembly.Load(assemblyByteCode.ToArray());
18-
this.templateType = assembly.GetType("TemplateNamespace.Template");
18+
this.templateType = assembly.GetType($"{templateNamespace}.Template");
1919
}
2020

21-
public static IRazorEngineCompiledTemplate<T> LoadFromFile(string fileName)
21+
public static IRazorEngineCompiledTemplate<T> LoadFromFile(string fileName, string templateNamespace = "TemplateNamespace")
2222
{
23-
return LoadFromFileAsync(fileName: fileName).GetAwaiter().GetResult();
23+
return LoadFromFileAsync(fileName: fileName, templateNamespace: templateNamespace).GetAwaiter().GetResult();
2424
}
2525

26-
public static async Task<IRazorEngineCompiledTemplate<T>> LoadFromFileAsync(string fileName)
26+
public static async Task<IRazorEngineCompiledTemplate<T>> LoadFromFileAsync(string fileName, string templateNamespace = "TemplateNamespace")
2727
{
2828
MemoryStream memoryStream = new MemoryStream();
2929

@@ -38,21 +38,21 @@ public static async Task<IRazorEngineCompiledTemplate<T>> LoadFromFileAsync(stri
3838
await fileStream.CopyToAsync(memoryStream);
3939
}
4040

41-
return new RazorEngineCompiledTemplate<T>(memoryStream);
41+
return new RazorEngineCompiledTemplate<T>(memoryStream, templateNamespace);
4242
}
4343

4444
public static IRazorEngineCompiledTemplate<T> LoadFromStream(Stream stream)
4545
{
4646
return LoadFromStreamAsync(stream).GetAwaiter().GetResult();
4747
}
4848

49-
public static async Task<IRazorEngineCompiledTemplate<T>> LoadFromStreamAsync(Stream stream)
49+
public static async Task<IRazorEngineCompiledTemplate<T>> LoadFromStreamAsync(Stream stream, string templateNamespace = "TemplateNamespace")
5050
{
5151
MemoryStream memoryStream = new MemoryStream();
5252
await stream.CopyToAsync(memoryStream);
5353
memoryStream.Position = 0;
5454

55-
return new RazorEngineCompiledTemplate<T>(memoryStream);
55+
return new RazorEngineCompiledTemplate<T>(memoryStream, templateNamespace);
5656
}
5757

5858
public void SaveToStream(Stream stream)

0 commit comments

Comments
 (0)