C# StringTemplate:Content[Anonymous]属性字符串为';t定义

C# StringTemplate:Content[Anonymous]属性字符串为';t定义,c#,template-engine,stringtemplate,C#,Template Engine,Stringtemplate,我有兴趣学习一下StringTemplate引擎,并在Visual Studio 2013中创建一个HTML页面,该页面可以使用C#使用StringTemplate 我已经进行了广泛的搜索,但是已经能够将一些简单的代码组合起来,这些代码将能够利用这个库,但是我收到一个运行时错误声明 未定义内容[匿名]属性字符串 我以为我已经在正确的位置和正确的文件路径添加了分隔符,但似乎仍然出现了这个错误,我仍然是编程新手,我是否在代码中遗漏了一些明显的东西 我一直在努力寻找关于图书馆的广泛信息、视频示例等 提

我有兴趣学习一下StringTemplate引擎,并在Visual Studio 2013中创建一个HTML页面,该页面可以使用C#使用StringTemplate

我已经进行了广泛的搜索,但是已经能够将一些简单的代码组合起来,这些代码将能够利用这个库,但是我收到一个运行时错误声明

未定义内容[匿名]属性字符串

我以为我已经在正确的位置和正确的文件路径添加了分隔符,但似乎仍然出现了这个错误,我仍然是编程新手,我是否在代码中遗漏了一些明显的东西

我一直在努力寻找关于图书馆的广泛信息、视频示例等

提前谢谢

我在下面添加了代码

static void Main(string[] args)
    {

        var System = new Program(); 
        System.HelloWorld();
        Console.ReadLine();

    }



 public string HelloWorld()
    {
        Template template;

        var path = @"C:\TemplateTester\index.st";
        var file = new FileInfo(path);
        using (StreamReader reader = file.OpenText())
            template = new Template(reader.ReadToEnd(), '$', '$'); // custom delimeter (defaults are "<" and ">")

        template.Add("title", "Hello World!");
        template.Add("array", new string[] { "Record A", "Record B", "Record C" });
        template.Add("object", new { PropertyA = "A", PropertyB = "B" });

        return template.Render();
    }
static void Main(字符串[]args)
{
var System=新程序();
System.HelloWorld();
Console.ReadLine();
}
公共字符串HelloWorld()
{
模板;
var path=@“C:\TemplateTester\index.st”;
var file=新文件信息(路径);
使用(StreamReader=file.OpenText())
template=新模板(reader.ReadToEnd(),“$”,“$”;//自定义delimeter(默认值为“”)
添加(“标题”,“你好世界!”);
添加(“数组”,新字符串[]{“记录A”,“记录B”,“记录C”});
添加(“对象”,新的{PropertyA=“A”,PropertyB=“B”});
返回template.Render();
}
我的ST文件

  <html>
   <body>
    <h1>Hello World</h1>
    $! file: C:\TemplateTester\index.st !$
    String: 
    $string$

    Array:
    $array:{it|$it$ ($i$)};separator=", "$

    Object:
    Property A = $object.PropertyA$
    Property B = $object.PropertyB$
   </body>
  </html>

你好,世界
$! 文件:C:\TemplateTester\index.st$
字符串:
$string$
数组:
$array:{it |$it$($i$)};分隔符=“,”$
对象:
属性A=$object.PropertyA$
属性B=$object.PropertyB$

由于我目前的声誉,我无法添加文件路径的图像。但是,ST文件只是位于应用程序文件夹中,正如visual studio文件的路径所建议的那样。来自程序文件夹(包含bin、obj、properties等)和包文件夹(包含Antlr引用)的外部文件

模板文件包含一个表达式
$string$
,但您没有使用
模板定义
string
属性的值。添加
方法,就像您对
title
array
object
所做的那样,感谢您知道它会很小,这已经消除了错误,但仍然没有加载HTML页面以查看更改,而只是显示一条空行只是为了回答我自己的问题,这只是将“System.HelloWorld”放置在Console.WriteLine参数中的一种情况。如果可以选择将未提供的属性作为空值接受,那就太好了,表示:如果未提供,则使其为null/nostring/emptystring。有选项吗?@Sam会忽略那个表达式的大小写吗?