【发布时间】:2012-04-20 18:33:52
【问题描述】:
我正在写一个text template 并且有以下代码行:
Tuple<string, int, bool>[] tupleArray = new[]
{
new Tuple<string, int, bool>("apple", 4, true),
new Tuple<string, int, bool>("grape", 1, false)
};
我想把它转换成anonymous types的数组:
var anonArray = new[]
{
new {Name = "apple", Diam = 4, Tasty = true},
new {Name = "grape", Diam = 1, Tasty = false}
};
然而,文本模板虽然看起来是一个单独的连续函数,但不允许使用隐式类型的局部变量。
是否有一种简单的方法可以绕过此限制并在文本模板中使用匿名类型?
【问题讨论】:
-
这应该可以正常工作,在 Visual Studio 2010 中,我将您的 anonArray 代码直接粘贴到模板中,然后使用 foreach 遍历数组,一切都很好,正如我所料。你用的是什么版本的VS?
-
@GarethJ Visual Studio 2010。您使用的是文本模板吗?
.tt? -
是的。具体来说,我使用的是 2010 SP1,但没关系。 Hello of type
-
@GarethJ 我不明白。我发誓
var以前没有工作过。我需要更努力地研究一下.. -
我们只是用一些样板扩展模板,然后通过 CodeDOM 在它上面运行 C# 编译器,所以一般来说,在 C# 中工作的内容在 T4 中工作。如果您想查看我们正在编译的内容,请将您的模板代码粘贴到运行时(预处理)模板中,您将看到扩展。
标签: c# t4 anonymous-types implicit-typing