110,535
社区成员
发帖
与我相关
我的任务
分享
其实就算你这样改 也只是改部分代码而已...反正就只给这个客户用 我到是觉得没什么. 反正别人也用不到..我觉得可以. 如果你想做那种通用的 其实你设计的时候就比较费劲了. 比如功能模块都是公告DLL的方式进行动态加载.. 整体功能不变只开发对应的DLL 但是这个的话 后期维护扩展比较方便 但是前期你重整 我觉得比较费劲. 如果采用copy改的方式. 开发速度快. 但是一旦项目整体要更新 你就需要对多个项目更新. 所以你自己选择吧... 我不想为了这一个定制模块,把整个代码单独复制一份来帮他修改。
具体如何设计,那要看到你的产品设计细节才清楚。只有当你有了设计图纸才知道该如何抽象、扩展和结构化才比较好。所有的最终说成是某种 EXE 或者 DLL 的概念,都首先依赖于你的在编写代码之前就应该有的抽象部分有关,如果有没有必要的抽象和多态,就没有真正合适的扩展的实现,最终不管说了多少技术名词儿结果还是重写一套东西。 所以虽然你没有具体的设计能拿出来,但是粗粗地分析是:你没有运用面向对象的抽象扩展,造成了无法重构和深入。
同意楼上,设计时扩展性考虑不周,必然有此结果。 但已经如此了,只能抽出代码来修改,换谁都没招。但建议乘此机会将项目功能改成模块比如dll,或者服务也可,免得再出现类似情况。
MEF
软件本来就是可扩展、可继承、可多态使用的东西,不像一幢大楼只能推倒重来,而软件是1分钟就重新建立起来的、具有抽象功能功能的。 你说的问题,证明你们在系统上就不具有抽象和扩展能力,不理解面向对象设计技术,只会一点结构化设计知识。
其实就算你这样改 也只是改部分代码而已...反正就只给这个客户用 我到是觉得没什么. 反正别人也用不到..我觉得可以. 如果你想做那种通用的 其实你设计的时候就比较费劲了. 比如功能模块都是公告DLL的方式进行动态加载.. 整体功能不变只开发对应的DLL 但是这个的话 后期维护扩展比较方便 但是前期你重整 我觉得比较费劲. 如果采用copy改的方式. 开发速度快. 但是一旦项目整体要更新 你就需要对多个项目更新. 所以你自己选择吧... 我不想为了这一个定制模块,把整个代码单独复制一份来帮他修改。
1、使用git/svn版本库,建立分支,进行开发。 2、将定制模块以服务接口的方式接入系统。 3、将定制模块以插件的形式接入系统。
注入:
builder.RegisterType<Log4netUtil>().As<Ilog>().SingleInstance();//log4注入
builder.RegisterType<NLogUtil>().Named<Ilog>("NLogUtil").SingleInstance();//nlog注入
访问实现
var log4 = EngineContext.Current.Resolve<Ilog>();
var nlog = EngineContext.Current.Resolve<Ilog>("NLogUtil");