我一直在经历一些奇怪的代码问题,最后似乎已经注意到,应该扮演着单身人士,实际上并不是单身人士。这是一个缓存类,所以我最终得到了同一个缓存的多个版本。我已经按照下面的方法编写了一些测试代码,并且在我看来这应该起作用。我做错了什么,或者我偶然发现了一个错误?使用SimpleInjector获得一个单例实例,该类实现了一个泛型类型,而不是实际返回一个单例
public class GenericClassesNotRegisteredAsSingletonTest
{
public interface ICacheManager<T> { }
public class SettingsData { }
public class SettingsCache : CacheManager<SettingsData> { }
public class CacheManager<T> : ICacheManager<T> { }
[Test]
public void Test()
{
var container = new Container();
var registration = Lifestyle.Singleton
.CreateRegistration(typeof(SettingsCache),
typeof(SettingsCache), container);
container.AddRegistration(
typeof(ICacheManager<SettingsData>), registration);
container.Verify();
var cache1 = container.GetInstance<SettingsCache>();
var cache2 = container.GetInstance<SettingsCache>();
bool sameRef = cache1 == cache2;
Assert.That(sameRef == true);
}
}
+1为可执行测试用例。 – Steven