如何填寫TODO以使此測試通過?Unity容器:默認情況下使用ContainerControlledLifetimeManager作爲「解決」方法組
class MyClass { }
[Test]
public void Singleton_by_default_test()
{
var parentContainer = GetUnityContainer();
var container = parentContainer.GetChildContainer();
// TODO: Add magic here (but do NOT explicitly register MyClass in container!)
Assert.AreSame(container.Resolve<MyClass>(), container.Resolve<MyClass>());
}
更新: 存在使用繼承的方式。
public class SingletonContainer : UnityContainer
{
public override object Resolve(Type t, string name)
{
var obj = base.Resolve(t, name);
RegisterInstance(t, name, obj, new ContainerControlledLifetimeManager());
return obj;
}
}
我使用container.GetChildContainer()得到容器實例所以這種方法並不適合我。
你被明確註冊的類型。我不想事先知道我需要的所有類型。 –