joh*_*hnc 7 inversion-of-control unity-container
我是否可以测试类型是否已在Unity容器中注册而不调用Resolve并捕获异常?
Kje*_*sen 12
Unity 2.0将有一个IsRegistered
方法,您可以使用该方法来确定是否已在容器中注册了类型.
截至2月10日,Unity 2.0的Beta1可在Codeplex上使用.请参阅发行说明并在此处下载; http://unity.codeplex.com/wikipage?title=Unity2%20Beta1
更新:
在2010年2月27日下载并测试了Unity 2.0 beta 1,它已经准备好了.如果您今天使用的是Unity 1.2,那么由于不完整的(?)IUnityContainer接口,您将不得不做一些主要的工作来使Unity 2.0正常工作.因此,如果您希望IsRegistered方法今天正常工作,您可以制作如下的扩展方法:
public static class UnityContainerExtensions
{
public static bool IsRegistered<T>(this IUnityContainer container)
{
try
{
container.Resolve<T>();
return true;
}
catch
{
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,我不是ResolveAll
在这里使用.原因是ResolveAll
不会返回Unity文档中所述的默认(未命名)注册:
如果您已注册具有相同类型但名称不同的多个类型,则此方法很有用.
请注意,此方法不会返回默认(未命名)注册的实例.
归档时间: |
|
查看次数: |
4759 次 |
最近记录: |