Vad*_*dim 14 c# ioc-container unity-container
ResolutionFailedException如果Resolve失败,怎么能让Unity不扔?
有类似的东西TryResolve<IMyInterface>吗?
var container = new UnityContainer();
var foo = container.TryResolve<IFoo>();
Assert.IsNull(foo);
Run Code Online (Sandbox Code Playgroud)
Bry*_*Ray 15
另请注意,如果您使用的是Unity 2.0,则可以使用新的IsRegistered()方法,它也是通用版本.
这是codeplex网站上的一个问题,你可以在这里找到代码(查看该主题的底部,他们已经制作了一个扩展方法......非常方便)
http://unity.codeplex.com/Thread/View.aspx?ThreadId=24543
你可以使用这样的代码:
if (container.CanResolve<T>() == true)
{
try
{
return container.Resolve<T>();
}
catch (Exception e)
{
// do something else
}
}
Run Code Online (Sandbox Code Playgroud)
CanResolve是那种扩展方法.我实际上是在创建容器时注册了这个扩展...这样的事情:
private void CreateContainer()
{
ExeConfigurationFileMap map = new ExeConfigurationFileMap();
map.ExeConfigFilename = // path to config file
// get section from config code goes here
IUnityContainer container = new UnityContainer();
container.AddNewExtension<UnityExtensionWithTypeTracking>();
section.Containers.Default.Configure(container);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8038 次 |
| 最近记录: |