Ninject 使用一种ActivationCacheStrategy
策略,将对象简单地存储在哈希映射中。这意味着对象的 GetHashCode 方法必须可用。我有类似以下的情况:
var something = kernel.Get<ISomething>();
something.Load() {
它执行以下操作:
var objectA = kernel.Get<IFoobar>();
objectA.Init(...);
var objectB = kernel.Get<IFoobar>();
objectB.Init(...)
等等
问题是在调用 Init 之前 objectA 的 GetHashCode 不可用。似乎 Ninject 假定 GetHashCode 在对象完全激活之前可用。
我的问题是这种行为是否是有意的,如果是,那么预期的解决方案是什么。我当然可以向我的内核添加各种非缓存激活缓存(删除默认值),但这感觉不对。