1

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 在对象完全激活之前可用。

我的问题是这种行为是否是有意的,如果是,那么预期的解决方案是什么。我当然可以向我的内核添加各种非缓存激活缓存(删除默认值),但这感觉不对。

4

0 回答 0