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中很多匿名对象的跨程序域传递也是采用的委托的实现方式

  • 相关阅读:
    word2vec原理推导与代码分析
    vim 删除
    HanLP 配置与使用
    python import 其他 package的模块
    mysql 修改root密码
    Spring Boot 整合 PageHelper
    MyBatis SQL语句构建器
    webpack4
    MySql DCL数据控制语言(对用户权限的设置)
    MySql DQL数据查询语言
  • 原文地址:https://www.cnblogs.com/njcxwz/p/5943033.html
Copyright © 2011-2022 走看看