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在对象完全激活之前可用。
我的问题是这个行为是否打算,如果是,那么预期的解决方案是什么。我当然可以在我的内核中添加一个非缓存的激活缓存(删除默认值),但这感觉不对。