如何将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,没有运气。
答案 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。