首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何最好地从两个不同的DLL中填充两个几乎相同类的不同对象,而不必维护两个不同的对象?

在云计算领域,如何最好地从两个不同的DLL中填充两个几乎相同类的不同对象,而不必维护两个不同的对象,可以通过以下步骤实现:

  1. 确定两个DLL中的类的相似性:首先,需要仔细比较两个DLL中的类,确定它们之间的相似性程度。可以比较类的属性、方法和行为等方面,找出它们的共同点和差异点。
  2. 创建一个通用的接口或抽象类:根据两个DLL中类的相似性,可以创建一个通用的接口或抽象类,定义两个类的共同属性和方法。这样可以实现对两个类的统一操作。
  3. 实现适配器模式:使用适配器模式,将两个DLL中的类适配到通用的接口或抽象类上。适配器模式可以将两个类的接口进行转换,使它们能够互相替代使用。
  4. 动态加载DLL并实例化对象:在代码中动态加载两个DLL,并通过反射机制实例化两个类的对象。通过适配器模式,将实例化的对象转换为通用的接口或抽象类类型。
  5. 使用对象池管理对象:为了提高性能和资源利用率,可以使用对象池来管理对象的创建和回收。对象池可以预先创建一定数量的对象,并在需要时从池中获取对象,使用完毕后再放回池中,避免频繁地创建和销毁对象。
  6. 使用依赖注入框架:可以使用依赖注入框架来管理对象的创建和注入。通过配置框架,将两个DLL中的类注入到通用接口或抽象类的实例中,实现对象的统一管理和使用。
  7. 使用配置文件进行对象映射:可以使用配置文件来定义两个DLL中类的映射关系。通过读取配置文件,动态加载并实例化对象,并将其转换为通用接口或抽象类类型。

总结起来,通过比较两个DLL中类的相似性,创建通用接口或抽象类,并使用适配器模式、动态加载DLL、对象池、依赖注入框架或配置文件等技术手段,可以实现从两个不同的DLL中填充两个几乎相同类的不同对象,而不必维护两个不同的对象。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java浅拷贝大揭秘:如何轻松复制两个不同对象某些相同属性

一、引言在Java编程,经常会遇到需要复制一个对象属性到另一个对象情况。这时,可以使用浅拷贝(Shallow Copy)来实现这个需求。那么,什么是浅拷贝呢?...浅拷贝是指创建一个新对象,然后将原对象非静态字段复制到新对象。这样,新对象和原对象就会有相同字段值。本文将详细介绍如何使用Java实现浅拷贝,并给出代码示例。...当调用一个对象clone()方法时,会创建一个新对象,并将原对象非静态字段复制到新对象。需要注意是,如果字段是引用类型,那么只会复制引用,不会复制引用指向对象。这就是浅拷贝特点。...因为当字段是引用类型时,clone()方法只会复制引用,不会复制引用指向对象。这就导致了浅拷贝后对象和原对象共享同一个引用类型字段。2....在实际开发,需要根据具体需求选择合适方法来实现浅拷贝。我是木头左,感谢各位童鞋点赞、收藏,我们下期更精彩!

7510

C#编码规范2 C#编码规范

,80%花费在于维护几乎没有任何一个软件,在其整个生命周期中,均由最初开发人员来维护; 编码规范可以改善软件可读性,可以让程序员尽快彻底地理解新代码。...这种描述不应该包括执行过程细节(它是怎么做),因为这常常是随时间,而且这种描述会导致不必注释维护工作,甚至更糟—成为错误注释。代码本身和必要嵌入注释将描述实现方法。...引用(Using) (可选)﹕ 开发系统引用其它系统Dll对象时,要列出其对应出处,是否与系统有关﹙不清楚可以不写﹚,以方便制作安装档。...l 一个程序集可拆分到多个DLL ,但这非常少见,在此准则也没有说明。   l 程序集和DLL 是库物理组织,命名空间是逻辑组织,其构成应与程序集组织无关。   ...l 为了更容易阅读,代码行请不要太长,最好宽度是屏幕宽度(根据不同显示分辩率其可见宽度也不同)。请不要超过您正在使用屏幕宽度。(每行代码不要    超过80个字符。)

2.6K91

Spring、springboot面试宝典100问

在依赖注入,您不必创建对象,但必须描述如何创建它们。您不是直接在代码 中将组件 和服务连接在一起,而是描述配置文件哪些组件需要哪些服务。由 IoC 容器将它们装配在一起。...这概念是说你不用创建 对象只需要描述它如何被创建。你不在代码里直接组装你组件和服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC 容器)负责把他们组装起来。...l Spring 容器 XML 文件读取 bean 定义,并实例化 bean。 l Spring 根据 bean 定义填充所有的属性。...102、在 Spring 框架如何更有效使用 JDBC? 使 用 SpringJDBC 框 架 , 资 源 管 理 和 错 误 处 理 代 价 都 会 被 减 轻 。...也指被通知(advised )对象。 119、什么是代理? 代理是通知目标对象后创建对象客户端角度看,代理对象和目标对象是一样

22910

原 Data Access Compone

调试会话断点停止和继续,访问相同类型DAC只会进行一次封送。(如果调试器使用不同类型来引用目标地址,那么长度也可能是不同,DAC会为这个新类型创建一个新缓存实体)。...如果值已经在缓存,DAC会通过目标地址来查找。因此只要使用相同类型引用两个调试对象地址,那么我们就可以正确比较两个宿主机地址。...### PTR类型 DAC调试目标空间封送值到调试地址空间,弄明白DAC如何处理对象指针时必要。...鉴于这两个变量始终保持目标地址, 它们应该是PTR_BYTE, 不是BYTE*。 在不同 PTR 类型之间做转换有约定方法: dac_cast。...使用DAC正确将值目标封送到主机是很重要主机错误使用目标地址 (反之亦然)会导致未映射地址。如果映射了错误地址, 则无法得到预期值。

97260

“设计应对变化”--实例讲解一个数据同步系统

聪明你也许又看出来了,管家发钥匙,就是“中介者模式”,管家发钥匙依据是钥匙编号与房间编号一一对应,就是“关系影射”,套在数据库与面向对象软件编程,就是“ORM”.    ...将同类型数据表映射成一个实体对象 1,复杂同步需求 这里数据表是关系数据库表,将数据表一对一映射成实体对象是很成熟技术了,例如大名鼎鼎ORM持久化框架Hibernate,以及新近....弄清楚了两个系统间同类差异,要把数据A系统同步到B系统不是很困难事情。但具体怎么做呢? 写一个专门程序来处理这两个同步?显得有点多余,而且表一旦很多,工作量将剧增。...4,如何使用数据同步实体类 好了,两个系统用户实体类都定义完成了,由于它们都继承自IUser接口,所以它们之间完全可以交换数据,最后剩下工作就是将这两个实体类放到两个程序集中分别编译,例如 系统A...数据同步程序发送端将使用SystemA.Model.dll,根据要同步实体对象映射数据表,到数据源查询数据,然后填充到实体类; 数据同步程序接收端将使用SystemB.Model.dll,根据要同步实体对象映射数据表

97370

铸造模拟软件MagmaSoft与Novacast精度对比

两个软件凝固过程得到结果几乎相同。...液体积分数为20%和10%时存在一些细微差别,这可能是因为两个模拟软件中使用了不同网格划分方式和网格类型造成。...MagmaSoft软件最后一张图片,型腔体积分数为0%,Novacast软件在同一时刻可以看到液体积分数为5%,并且液相位于铸件。...图5(A ) MagmaSoft充填至9秒模拟显示图5(B) Novacast充填至9秒模拟显示(填充体积率间隔10%)图5可以看到金属液填充整个型腔过程。...图6清楚看出,不同于第一组模拟参数得到结果,两个软件得到缩孔位置都在Connor浇口内,不是在铸件。虽然两个软件结果在缩孔位置上有些小区别,但最重要都是在铸件上都没有凝固缺陷。

1.9K20

(六):大型项目容器化改造

虚拟化和容器化是项目云化不可避免两个问题。虚拟化由于是纯平台操作,一个运行于linux操作系统项目几乎不需要做任何改造就可以支持虚拟化。项目如果要支持容器化则需要做许多细致改造工作。...如何快速制作一个业务镜像。这些一直是困扰我们多时问题。容器分类时候,如果需要对代码组织方式和架构进行调整,对于几十万行项目将会是一个灾难。...同时,在微服务最佳实践里面,建议将项目的代码分割成一个个微服务。每个微服务代码由不同团队维护,各自独立。我们先暂时不讨论这种方式优缺点。...如果按上面的建议来进行Docker业务分类,无疑会给项目带来巨变,并且涉及组织架构大调整,几乎是一个不可能任务。那么如何做既可以对容器进行分类,又保持原有的开发模式不变。...上面我们已经制作了一个项目统一镜像,在分类时候,我们只要根据不同类型容器,修改不同docker-entrypoint.sh来启动不同类进程就可以了。

1.5K30

Spring系列十:Spring FactoryBean

概述 工厂bean是用作在IoC容器创建其他bean工厂,但它是特定Springbean。...如下: JNDI查找对象(例如数据源)时,可以使用JndiObjectFactoryBean。 使用经典Spring AOP为bean创建代理时,可以使用ProxyFactoryBean。...在大多数情况下,你几乎不必编写任何自定义工厂bean,因为它们框架特定功能,并且不能在Spring IoC容器范围之外使用。...FactoryBean 测试 在这个例子,我正在创建一个工厂bean来实例化不同类Employee对象,例如他们manager, director等具有一些预先填充属性。...Manager] Employee [id=-1, firstName=dummy, lastName=dummy, type=Director] 如你所见,EmployeeFactoryBean使用相同工厂方法创建了两个不同员工对象

39910

DataWindow.Net组件示例(全部开源)

这是一个对象,此对象功能与DataWindowControl控件相同,唯一不同地方:它是不可视化操作数据窗口控件,在NET,它相当于DataSet或DataTable对象作用,填充并操作数据...,我们首先要对控件设置两个属性.即它所加载数据所需要载体文件名称和对象.可以理解为承载数据可视化窗口名称及其所在DLL文件名称.使用如下方式加载即可,如图-1所示 ?...此种方法目前仅支持SqlServer数据库,而且最好在WinForm应用程序中使用.此控件事务与NET事务有所区别,它是常连接Db,NET事务是使用一次连接一次,这是最大区别.所以使用此方法对连接...,一般最常见常景要属省市区联动效果.现使用此控件模拟此业务场景,场景如下描述 两个栏目,分别是省和市,均为下拉菜单编辑类型.其中,省填充北京市和天津市;市数据根据北京市或天津市,加载下面的区县....图-11 最后,我们要做事情,就是填充数据,填充数据是普通二维表数据,不必是交叉后表数据.填充数据方式要说明下:采用PB传统方式加载,不是通过DataTable对象加载就可以了.如图-12所示

2.5K110

我个人对OOP理解

,OOP强调一切皆对象,这符合我们面向对象编程思考方向 B.继承实现了代码复用,这在例子我们已经有所体会,合理使用继承,会使我们代码更加简洁 C.继承使得程序结构清晰,子类和父类层次结构更清晰...,最终目的是是子类只关注子类相关行为和状态,无须关注父类行为和状态.例如,学员只需要管 理学号、爱好这种属性,公共姓名、年龄、性别属性交给父类管理 pay3:多态 A.相同两个或者是多个属于不同类对象...,对于同一个消息(方法调用)做出不同响应行为方式 pay4:接口 A.接口是对继承单根性扩展:请你回想一个我们在第六章继承问题,在C#,一个子类可以继承多个父类吗?...其它类可以通过这些规范和约定与她通信 C.接口屏蔽了实现细节:接口可以让接口使用者不必关心接口实现者是如何实现USB接口标准,就可以正常使用它了。...D.接口使用方便团队协助开发:例如一个系统,加入要实现对象排序功能,实现接口专门实现接口,做排序功能专门做排序,如果一 个系统都能够做到这种设计,便可以更为方便使用开发团队进行分工明确协作开发

60430

「领域驱动设计」集成有界上下文策略

对于每个有界上下文,最好有一个真正内部模型和一层转换,不是使用单一对象来试图填补不同、常常相互冲突工作。...我们不会扩展当前任何系统,但是我们必须使用并返回来自每个现有系统数据,以便使新通道无缝集成到当前体系结构。 我们将需要能够要求库存管理系统数据,以便知道什么应该提供网上购买。...这意味着数据可以在两个系统之间流动,不必更改现有的脱机系统,也不必使新系统符合现有系统模型。 开放主机 当您应用程序需要与另一个系统集成时,您通常会提供一个转换层来简化集成。...这意味着两个系统根本不需要集成,因此我们失去了使集成工作正常进行开销。 结论 在任何重要应用程序几乎不可避免需要与现有的应用程序、第三方服务或多个有界上下文集成。...世界上许多不同类公司都可以通过在组织内集成新和现有的系统来获得巨大生产力收益。 当您被要求集成两个非常不同系统时,理解围绕集成通用模式将是一项巨大资产。

53370

继承、接口与多态相关问题

子类不能继承父类访问权限为private成员变量和方法。子类可以重写父类方法,及命名与父类同名成员变量。但Java不支持多重继承,即一个类多个超类派生能力。...对于成员变量(域),导出类将占有基类承袭而来成员变量和自己成员变量(变量名字一同也是如此),况且,将分摊不同存储空间,这么,导出类将具有两个名目一样域。...为了取得基类域,务须实际著名super.field能力走访,默许域则是导出类自己域。 c静态计策是与类相关系,而非与某个对象相干联,那么它就不拥有多态行动。 4、 什么是重载?...重载: a方法重载是让类以统一方式处理不同类型数据一种手段。多个同名函数同时存在,具有不同参数个数/类型。重载Overloading是一个类多态性一种表现。...如果在子类定义某方法与其父类有相同名称和参数,我们说该方法被重写 (Overriding)。在Java,子类可继承父类方法,不需要重新编写相同方法。

1.4K20

What is Type in managed heap?

在面向对象原则下,InstanceField代表对象状态(state), 方法则体现对象行为(behavior)。...这些基于Type信息是如何保存,今天我们就来简单讨论这个问题。 一、 Sample 在开始介绍之前我们给出一个有趣例子。...该程序目的是证明在不同线程中被加锁Type对象是否是同一个对象,如果是同一个对象,果是两个线程操作执行间隔应该是10s,否则他们几乎在同一个时刻执行。...两个操作输出了相同时间,这说明了在两个不同AppDomain中进行加锁CustomType Type对象并非同一个对象。...被加载到我们新创建两个AppDomain,所以在AppDomain1和AppDomain2CustomType Type是不同对象

74880

《101 Windows Phone 7 Apps》读书笔记-Weight Tracker

为了得到不同类图表,我们可以在Chart元素中放置不同类图表。目前,图表类型有15种:7种常用图表、8种stacked图表。所有常用图表如表29.1所示。 ? ? ? ? ? ? ?...可以为每个区域赋值不同数据,产生如图29.1所示效果(light主题下)。 ? 图29.1 在同一图表中使用两种类型来填充。     每种类型图表,其种类可以不同。...图表,以及它不同种类对象,也具有大量属性用来格式化其内容、标注、标题、轴和数据点等等。...它们API几乎和本书所介绍版本一致,但是在其内部,它们使用了新架构来实现stacked类型对象。因此,它们包含了一些性能上提升,甚至在一些当前版本图表无法使用地方,它们就可以胜任。...为图表数据点选择颜色时,无论是同种类型或者是不同类型,它在分配给Palette属性样式集合中进行选择。这个集合可以被更改,每种包含了Palette属性图表类型,也可以具有其自身拥有的集合。

1.4K80

小钢架构思考:架构设计

对象封装、继承和多态等特性,让我们以更接近现实世界方式来思考程序设计。面向对象相比面向过程容易实现更好分离,相应可扩展性、可复用性、可维护性也会比较高,但同时会牺牲掉一些性能。...不过,也因为硬件发展迅猛,所以牺牲那点性能也不算什么了。 面向对象设计难点在于抽象,问题域中抽象出一个个对象,并找出它们之间关系。好在有SOLID原则和一大堆设计模式指导我们如何更好设计。...另一方面来说,架构设计,不管是面向过程、面向对象、面向切面,还是面向服务,无一例外,主要都是在对复杂系统进行分解。那么,相应,就需要思考三个问题:分解为哪些?如何分解?分解到什么程度?...大小粒度维度考虑,无非就是将复杂系统分离为各个子系统,再分离为不同模块,再细分到不同类。 在实际应用,并不会只采用一种维度,而是多种维度综合考虑,不同部分采用不同维度分离方案。...因此,适度设计需要在当前需求和未来需求之间做好平衡,而我觉得只考虑当前需求和未来几乎确定会发生需求是最好平衡点。

59720

适合初学者学习面向对象编程(OOP)入门指南

在这个例子,Car类定义了三个属性(make、model、year)和两个方法(start和drive)。myCar对象是Car类一个实例,它具有这些属性和值,并且可以调用类方法。...通过这个例子,我们可以清楚看到,类提供了一个模板,而对象是这个模板具体实现。通过理解类和对象关系,我们可以更好掌握面向对象编程思想,从而编写出更加结构化和易维护代码。...这简化了对象使用,让用户只关注它功能,不必理会它是如何实现。就像使用智能手机,你只需要知道如何操作应用,不需要了解背后代码逻辑。 3....多态(Polymorphism) 多态使得不同类对象可以被当作一个共同超类对象来处理。这允许一个函数根据上下文以不同方式操作。简单来说,就是同一个接口,可以有不同实现方式。...多态(Polymorphism) 多态允许不同类对象被视为同一个超类实例,并根据实际对象类型表现出不同行为。

9510

ADO.NET入门教程(八) 深入理解DataAdapter(上)

摘要 ADO.NET有两个核心组件:基于连接Data Provider组件以及基于非连接DataSet组件。基于连接Data Provider组件常用于实时数据库检索数据。...基于非连接DataSet,似乎与数据库没有直接联系,仅仅用于在本地内存存储Data Provider提供数据表或集合。这一切似乎很微妙,此时,你是否在想:这两大组件是如何联系在一起呢?...换句话说,对于不同数据源,我们需要找到对应数据库提供程序(Data Provider)来匹配他们。当然,你也不必为此感到困惑和紧张,在前面我已经讲得很详细了。...,然后检查是否打开连接,如果没有打开连接则打开连接,紧接着调用DataReader接口检索数据,最后根据维护映射关系,将检索到得数据库填充到本地DataSet或者DataTable。...DeleteCommand属性:获取或设置用于数据源删除记录命令。 InsertCommand属性:获取或设置用于将新记录插入数据源命令。 Fill方法:填充数据集。

1.5K90

Java面试集锦(一)之操作系统

在页式存储管理,将程序逻辑地址划分为固定大小页(page),物理内存划分为同样大小帧,程序加载时,可以将任意一页放入内存任意一个帧,这些帧不必连续,从而实现了离散分离。...两者不同点: 目的不同:分页是由于系统管理需要不是用户需要,它是信息物理单位;分段目的是为了能更好满足用户需要,它是信息逻辑单位,它含有一组其意义相对完整信息; 大小不同:页大小固定且由系统决定...以上讲的是堆栈,如果对于堆来说,每个dll有自己堆,所以如果是dll动态分配内存,最好dll删除;如果你dll中分配内存,然后在exe,或者另外一个dll删除,很有可能导致程序崩溃。...11.OS如何实现内存管理? 虚拟内存 内存页 1. 并发 并发是指宏观上在一段时间内能同时运行多个程序,并行则指同一时刻能运行多个指令。...文件造成任何影响,因而极大地提高了可维护性和可扩展性,适用于大规模软件开发,使开发过程独立、耦合度小,便于不同开发者和开发组织之间进行开发和测试。

39630

【笔记】Java 调用 COM 组件之 com4j 使用说明

COM 类型库通常位于 .ocx、.dll、.exe 或 .tlb 文件。除了使用 OleView 预测文件之外,我仍然不知道如何为给定 COM 库定位类型库。...如下图所示,两个代理可以引用同一对象相同接口,或者两个代理可以具有相同对象不同接口。 因此,您不能使用 proxy1 == proxy2 这样表达式来检查两个代理是否引用同一个 COM 对象。...结论 除了上面列出那些注意事项之外,您几乎可以像使用普通 Java 对象一样使用所有这些 COM 对象。当然你也可以继续阅读下面的内容,以便更深入了解 com4j 工作原理。...事件和线程 如果某线程 X 调用一个 COM 方法,该方法又触发一个事件 Y,则执行事件方法 Y 线程将不是 X,而是 com4j 内部维护线程。因此,对线程本地资源访问需要仔细完成。..., Java 对象生命周期由垃圾收集控制。

2.6K30

C++ Qt开发:Qt安装与配置

这种机制使得对象能够在不直接了解其他对象情况下相互通信,提高了代码维护性和可扩展性。...国际化支持: Qt支持国际化和本地化,使得应用程序能够轻松适应不同语言和文化环境。开放源代码: Qt是一款开源框架,拥有活跃社区支持。...1.1 如何安装与配置安装和配置Qt通常涉及以下步骤。请注意,这里提供步骤基于一般情况,具体步骤可能会有所不同,具体取决于您使用操作系统。...此处头文件和库目录就是需要配置环境变量,打开环境变量,并依次配置如下两个头文件到系统;头文件目录:C:\Qt\Qt5.14.2\5.14.2\msvc2015_64\include库目录:C:\Qt....dllQt5Core.dllQt5Gui.dllQt5Widgets.dll\mingw514_32\plugins目录复制platforms文件夹,仅保留其中qwindows.dll文件。

66710
领券