dynamic与匿名对象

用dynamic接收匿名对象很方便,因为不需要去定义model了,但是也有一个弊端,就是匿名对象的作用范围是internal的,也就是只能存在于当前程序域,所以用dynimic跨程序域去接收一个匿名对象,显而易见是接收不到的

那么有什么好的解决办法么

第一种

[assembly: InternalsVisibleTo("A.B.BLL")]

这种做法破坏了所有internal修饰类的访问限制

第二种

将dynamic封装在一个通用的对象中

 public class DynamicModel
{
/// <summary>
/// key
/// </summary>
public string DynamicKey { get; set; } /// <summary>
/// object
/// </summary>
public dynamic DynamicObj { get; set; }
}

这种做法就可以跨程序域传递参数了

第三种

使用委托

    biz.TestDynamic(()=>new {name= });
  public void TestDynamic(Func<dynamic> pre)
{
var a= pre(); }

所以纵观这些方法,感觉委托对跨程序域传递匿名对象还是很方便的,另外linq、EF中很多匿名对象的跨程序域传递也是采用的委托的实现方式

上一篇:11、Java 日期时间 日期工具类


下一篇:Apache Ant在Windows下配置环境变量