zoukankan      html  css  js  c++  java
  • 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=1 });
      public void TestDynamic(Func<dynamic> pre)
            {
                var a= pre();
    
            }

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

  • 相关阅读:
    洛谷提高组比赛day2
    清北合肥day2-day5
    高精度开根
    清北合肥day1
    愤怒的小鸟
    蓝书图论题
    替罪羊树&&非旋treap
    【bzoj4811】[Ynoi2017]由乃的OJ 树链剖分+线段树区间合并
    【bzoj3866】The Romantic Hero dp
    【bzoj3747】[POI2015]Kinoman
  • 原文地址:https://www.cnblogs.com/njcxwz/p/5943033.html
Copyright © 2011-2022 走看看