Tag: 匿名类型

在运行时解析参数名称

可能重复: 查找传递给C#中函数的变量名称 在C#中,有没有办法(更好的方法)在运行时解析参数的名称? 例如,在以下方法中,如果重命名方法参数,则还必须记住更新传递给ArgumentNullException的字符串文字。 public void Woof(object resource) { if (resource == null) { throw new ArgumentNullException(“resource”); } // .. }

来自sql查询执行entity framework的匿名类型结果

我使用entity framework5.0与.net框架4.0代码的第一种方法。 现在我知道我可以通过以下方式在entity framework中运行原始sql var students = Context.Database.SqlQuery(“select * from student”).ToList(); 它工作得很好,但我想要的是返回匿名结果。 例如,我只想要学生表中的特定列,如下所示 var students = Context.Database.SqlQuery(“select FirstName from student”).ToList(); 它不起作用。 它给了例外 数据读取器与指定的“MyApp.DataContext.Student”不兼容。 类型为“StudentId”的成员在数据读取器中没有具有相同名称的相应列。 所以我尝试过dynamic类型 var students = Context.Database.SqlQuery(“select FirstName from student”).ToList(); 它也没有用,它返回一个空对象。 没有可用的数据。 有没有办法从动态SQL查询中获取匿名类型结果?

跨程序集边界返回/使用动态匿名类型

下面的代码效果很好。 如果Get和Use方法位于不同的程序集中,则代码将失败并显示RuntimeBinderException。 这是因为.Net运行时系统仅保证程序集内的匿名类型(在本例中为 )的通用性。 有没有办法愚弄运行时系统来克服这个问题? 我可以在Use侧检查调试器中的对象,调试器可以看到相关的属性。 class Program { static void Main(string[] args) { UsePerson(); Console.ReadLine(); } public static void UsePerson() { var person = GetPerson(); Console.WriteLine(person.Name); } public static dynamic GetPerson() { return new { Name = “Foo”, Age = 30 }; } }