日期:2014-05-18  浏览次数:20763 次

有什么办法在一个已封装的类的实例中保存一个对象
假设有类CA,CA是第三方的不是我写的,现在我想在CA的实例中再保存一个对象

有种思路是,为每个实例找到一个唯一标识,然后用像Dictionary这种key value的集合存放,如:
定义一个静态的Dictionary<>,key放CA的实例,value放要保存的对象。但这样有个很大的问题就是CA实例一直保存在Dictionary就不会自动释放,这样很不好。

求解决方式,谢谢!!!

------解决方案--------------------
一、hashtable或dictionary都可以,ca使用完毕调用ca.Dispose()前先从hashtable或dictionary移除。

二、新建CB类
class CB
{
CA ca;
object yourObject;
}
------解决方案--------------------
关键 CA 实例谁在用,如果只是你自己用,那么直接继承就好了

如果不是的话,那么就没什么好办法了。接口注入也是可以考虑的但很麻烦,毕竟运行的上下文
你是控制不了的。
------解决方案--------------------
如果CA是可继承的
那么你可以应用适配器

class CAdapter:CA
{
CA _ca;
object yourObject;
}

这样你这个也可以和CA类一样使用

如果CA已经声明sealed了,那就要看实际项目了