如何在C#中将var传递给函数

时间:2015-11-02 12:45:44

标签: c# razor razorengine

如何将var传递给函数?

我需要创建以下未知数据模型,并将其传递给我的函数,该函数使用RazorRenderer进行解析:

var emailData = new {name="value" , name2="value2" ... , nameN="valueN"}

函数无法接收var,所以我们使用了对象,但后来我们无法将其转换回来,并且在调用时得到异常:

string htmlBody = render.Parse(File.ReadAllText(TemplatePath), emailData );

当我执行以下操作时,它在同一功能中起作用:

var emailData = new { UserRequest = "hello", UserEmail = "name@domain.com" };
string htmlBody = render.Parse(File.ReadAllText(TemplatePath), emailData);

但是当尝试将emailData传递给函数时它不起作用,任何想法?

我可以从函数中渲染并将结果传递给函数,但我认为在函数内部执行它可能会很好。

BTW-我试过JSON Serialize和Decerialize,没有运气。

1 个答案:

答案 0 :(得分:0)

如果我理解你的问题,那是不可能的。匿名类型名称无法在用户代码中表示,因此无法将它们作为函数的输入参数。

最好的办法是创建一个类型并将其用作查询的返回值,然后将其传递给函数。例如,

class YourDataClass {
  public string ColumnName; 
}

var query = (from name in some.Table
            select new YourDataClass { ColumnName = name });
YourMethod(query);

...

YourMethod(IEnumerable<YourData> enumerable);

在这种情况下,您只选择一个字段,因此直接选择字段可能更容易。这将导致查询被键入为字段类型的IEnumerable。