C#中如何获取所有引用某object的其他所有object?

天堂里的死神 2009-09-02 08:37:09
遇到一个需求,把一堆物体存到包里,然后要删除某个包里的某个物体A,这时,需要这个物体确实的被删除了。
但是包的物体与包的物体之间是可以互相引用的,.NET的机制导致这个A实际上无法被删除,因为还会有别的包里的物体引用它。
所以想问一下,是否能有这样的方式,可以得知究竟有谁引用了这个物体A呢?
...全文
334 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
微创社(MCC) 2009-09-06
  • 打赏
  • 举报
回复
关注一下,遇到了相同的问题.

参考一个源代:
http://www.google.cn/codesearch/p?hl=zh-CN&sa=N&cd=1&ct=rc#pr6TPJlvJvw/base/Imported/Bartok/runtime/shared/System/MultiUseWord.cs&q=MultiUseWord%20lang:c%23
天堂里的死神 2009-09-05
  • 打赏
  • 举报
回复
已经用包装类的方法解决,就此结贴,感谢众位的回复。 ^_^
robin521 2009-09-02
  • 打赏
  • 举报
回复
借用包装类的思想,我也小发表一下我的观点,

1.你可以使用构造函数,重载各种不同类对它的操作,这样,这个包装类被操作就会激活相应方法
2.重载的方式可以使用委托,这样可以传入操作方式,从而辨别是哪一种操作,或是谁操作
天堂里的死神 2009-09-02
  • 打赏
  • 举报
回复
多谢各位回复,我其实也正在考虑包装类的思路。
其实这个是我在做的一个外包需要用到的功能,这周末就要有个版本,时间比较紧,所以想如果.NET GC有类似的方法就好了,我就可以省点事情。看来又得熬通宵了,5555。。。

我先按包装类来写吧,谢谢findcaiyzh、robin521的提醒 ^_^,谢谢大家的回复。
过两天再来结贴。

另外,今天看了看文档,发现有个WeakReference,不知道有人研究过这个类么?是否是一种.NET自己的“包装”思路?
^_^ 谢谢大家。
TTOJJ 2009-09-02
  • 打赏
  • 举报
回复
不知道樓主是否瞭解c++,其中有個智能指針,可以借鑒~~
Rain02113204 2009-09-02
  • 打赏
  • 举报
回复
4楼的方法应该可行
宝_爸 2009-09-02
  • 打赏
  • 举报
回复
包装类,你可以使用Template Class,会通用一点。
宝_爸 2009-09-02
  • 打赏
  • 举报
回复
开始感觉有点不可能。
后来想到种 方法,你看看行不行。
为物体 创建一个包装类
这个包装类处理所有对物体的操作,这样外面只要持有或则个包装类的引用,而这个包装类持有对物体的引用。
当你包装类提供Delete这样的函数,用于清除对物体的引用,并调用物体的Dispose函数来做真正的清除。
清除后,包装类的其他函数则返回错误。
guyehanxinlei 2009-09-02
  • 打赏
  • 举报
回复
还真没有想过这个问题,估计GC或许是知道的,关注一下...
Dobzhansky 2009-09-02
  • 打赏
  • 举报
回复
这个问题很好
lijunfeng 2009-09-02
  • 打赏
  • 举报
回复
你可以为物体建立一个事件,在其他物体引用它的同时把一个删除引用方法加入到这个事件中,在删除这个物体时就激发事件让所有引用它的物体全部删除引用。
SlaughtChen 2009-09-02
  • 打赏
  • 举报
回复
不清楚,关注一下
lovelan1748 2009-09-02
  • 打赏
  • 举报
回复
using System.Reflection
用反射判断它的父类型,不是很清楚
angel6709 2009-09-02
  • 打赏
  • 举报
回复
没有吧、、、不知道。

110,545

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧