艾伟:关于.NET中的循环引用

简介:   在现在开发模式日益增多,框架泛滥的时代里,人们越来越多的依赖于固有的框架模式的开发而忽略了对项目底层架构的理解。所以在部署项目结构的时候,会遇到“循环引用”这个问题,今天我就遇到了。   其实说起来并不复杂,就是我有5个项目A,B,C,D,E,然后我在项目A中引用了B的类,然后又在B中引用了C的类,最后又在C中引用了A中的类,这就构成了循环引用。

  在现在开发模式日益增多,框架泛滥的时代里,人们越来越多的依赖于固有的框架模式的开发而忽略了对项目底层架构的理解。所以在部署项目结构的时候,会遇到“循环引用”这个问题,今天我就遇到了。

  其实说起来并不复杂,就是我有5个项目A,B,C,D,E,然后我在项目A中引用了B的类,然后又在B中引用了C的类,最后又在C中引用了A中的类,这就构成了循环引用。

  

  那么碰到这样的问题,怎么解决呢?

  解决方案一:

    我们考虑创建新的一个项目Z,然后分别添加对A,B,C的引用,这样A,B,C只要引用Z就行了。

  解决方案二:

    也可以创建一个类库项目,然后将A,B,C,D,E,F……中需要引用的类都放到这个类库项目中去,然后在引用的时候都引用这个类库项目就ok了。

  其实以上两种解决方案有异曲同工之处,就是通过创建“第三方”项目来做一个桥梁,整合需要共用的类,然后一起引用它。

  总之还是要在实际的项目中去体会,去感受!

目录
相关文章
|
3月前
|
开发框架 前端开发 .NET
闲话 .NET(3):.NET Framework 的缺点
闲话 .NET(3):.NET Framework 的缺点
|
设计模式 C# 数据库
.Net5发布在即,当心技术断层
.Net5发布在即,当心技术断层
252 0
.Net5发布在即,当心技术断层
|
SQL NoSQL 关系型数据库
.NET5真的来了,你准备好了吗?
.NET5真的来了,你准备好了吗?
182 0
.NET5真的来了,你准备好了吗?
艾伟_转载:关于.NET中的循环引用
  在现在开发模式日益增多,框架泛滥的时代里,人们越来越多的依赖于固有的框架模式的开发而忽略了对项目底层架构的理解。所以在部署项目结构的时候,会遇到“循环引用”这个问题,今天我就遇到了。   其实说起来并不复杂,就是我有5个项目A,B,C,D,E,然后我在项目A中引用了B的类,然后又在B中引用了C的类,最后又在C中引用了A中的类,这就构成了循环引用。
663 0
|
算法 安全 .NET
艾伟_转载:探索.Net中的委托
废话 我本来以为委托很简单,本来只想简简单单的说说委托背后的东西,委托的使用方法。原本只想解释一下那句:委托是面向对象的、类型安全的函数指针。可没想到最后惹出一堆的事情来,越惹越多,罪过,罪过。本文后面一部分是我在一边用SOS探索一边记录的,写的非常糟糕,希望您的慧眼能发现一些有价值的东西,那我就感到无比的荣幸了。
803 0
|
SQL 存储 数据库
艾伟_转载:ADO.NET中的五个主要对象
Connection 物件   Connection 对象主要是开启程序和数据库之间的连结。没有利用连结对象将数据库打开,是无法从数据库中取得数据的。这个物件在ADO.NET 的最底层,我们可以自己产生这个对象,或是由其它的对象自动产生。
1060 0
|
算法 Java .NET
艾伟_转载:.NET内存管理、垃圾回收
1. Stack和Heap   每个线程对应一个stack,线程创建的时候CLR为其创建这个stack,stack主要作用是记录函数的执行情况。值类型变量(函数的参数、局部变量 等非成员变量)都分配在stack中,引用类型的对象分配在heap中,在stack中保存heap对象的引用指针。
1034 0
|
Java .NET
艾伟_转载:.NET Discovery 系列之七--深入理解.NET垃圾收集机制(拾贝篇)
本系列文章导航 .NET Discovery 系列之一--string从入门到精通(上) .NET Discovery 系列之二--string从入门到精通(勘误版下) .NET Discovery 系列之三--深入理解.
1068 0
|
.NET C# C++
艾伟:.NET 4.0 中的契约式编程
契约式编程不是一门崭新的编程方法论。C/C++ 时代早已有之。Microsoft 在 .NET 4.0 中正式引入契约式编程库。博主以为契约式编程是一种相当不错的编程思想,每一个开发人员都应该掌握。它不但可以使开发人员的思维更清晰,而且对于提高程序性能很有帮助。
971 0
艾伟_转载:20条.NET编码习惯
1、不要硬编string/ numeric,可以使用一些常量代替。 (提高可读性) int Count;Count = 100;private static const int ZERO  =  0;if(  Count  ==  ZERO ){// 执行一些操作} 2、对于字符串比较-使用String. Empty ,而不是""。
739 0