日期:2014-05-17  浏览次数:20771 次

多个项目之间的引用值得问题,疑惑。。。
我在一个项目A,添加引用了项目B,然后我再A项目的一个类中访问B中的一个静态变量,比如字典
users。但是这个users没有数据,而实际上如果在B项目里面看,是有数据的,真是的情况下是有数据的。为什么这样引用会没数据呢?

------解决方案--------------------
你要跟踪调试,看一下B的字典在进行了什么初始化操作后才有数据。A调用时有没有走这些初始化流程 
------解决方案--------------------
项目互相引用本身就是不推荐的,应该采用回调或者传入对象的方法,变成单向引用。
------解决方案--------------------
有没有数据是运行时的事情

和引用应该没关系,你可以通过调试来查看变量的访问来确定数据什么时候被读写了
------解决方案--------------------
引用:
Quote: 引用:

项目互相引用本身就是不推荐的,应该采用回调或者传入对象的方法,变成单向引用。

项目没有相互引用啊,再说好像不能相互引用把?

在.net中是不能互相引用的。
你引用的是静态值,所以你要明白,静态变量只是在实例之前加载,而且只会加载一次。所以你访问的时候要确定这个变量是否已经赋值。
------解决方案--------------------
静态变量也是可以赋值的,你要看b项目里面是什么时候赋的值,如果没赋值,你调用时没值就是正常的了。
------解决方案--------------------
引用:
你要跟踪调试,看一下B的字典在进行了什么初始化操作后才有数据。A调用时有没有走这些初始化流程 

+1
------解决方案--------------------
引用:
是不是因为在不同的进程???我试了单列模式,也不行。。。不知道为什么。。。求助。。。


如果真是在不同的进程里,的确会那样,进程是应用程序的边界,一个应用程序可以包含多个应用程序域,在运行时,程序集(dll)会被加载到各自的应用程序域中,可以动态加/卸载
------解决方案--------------------
既然引用到了A A运行,应该在一个进程中,你看一下有哪是不是对Users 进行了操作