我一直在經歷一些奇怪的代碼問題,最後似乎已經注意到,應該扮演着單身人士,實際上並不是單身人士。這是一個緩存類,所以我最終得到了同一個緩存的多個版本。我已經按照下面的方法編寫了一些測試代碼,並且在我看來這應該起作用。我做錯了什麼,或者我偶然發現了一個錯誤?使用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