可能重复:
匿名类的返回类型是什么
我正在使用如下查询创建一个匿名类型:
来电代码:
var query= from p in _db.ExecuteDataSet(SQL).Tables[0].AsEnumerable()
select new {
ProductCode = p.Field<string>("PRODUCT_CODE"),
ProductName = p.Field<string>("PRODUCT_NAME")
};
foreach(var product in query)
{
WriteProduct(product);
}
Run Code Online (Sandbox Code Playgroud)
方法如下:
void WriteProduct(object prod)
{
// access the product
}
Run Code Online (Sandbox Code Playgroud)
我无法获得该WriteProduct方法的正确参数类型.请帮我.
Chr*_*ens 10
是的你可以.
public class Program
{
private static void Thing(dynamic other)
{
Console.WriteLine(other.TheThing);
}
private static void Main()
{
var things = new { TheThing = "Worked!" };
Thing(things);
}
}
Run Code Online (Sandbox Code Playgroud)
但作为一个小的,细微的细节,不要!
匿名类型由于某种原因是匿名的,它们不是代码中的第一类实体,它们更方便.如果类型很重要,请将其定义为.
与匿名类型交谈有3种方式:
obj.GetType().GetProperties()/ 获取属性prop.GetValue(obj, null)等)dynamic(即obj.ProductCode和obj.ProductType,for dynamic obj) - 上述优化和更漂亮的版本你WriteProduct必须使用其中一个; 或者:使用匿名类型以外的东西; a Tuple<...>,也许(虽然这往往使得很难知道数据是什么) - 或者是一个适当定义的自定义接口,类或结构.
| 归档时间: |
|
| 查看次数: |
5256 次 |
| 最近记录: |