Add a TryResolve method for dependencies

--HG--
branch : dev
This commit is contained in:
Renaud Paquay
2010-10-19 17:53:42 -07:00
parent a84690c256
commit 859d8ba0b6
4 changed files with 18 additions and 0 deletions

View File

@@ -106,6 +106,10 @@ namespace Orchard.Tests.DisplayManagement {
throw new NotImplementedException();
}
public override bool TryResolve<T>(out T service) {
throw new NotImplementedException();
}
public override T GetState<T>(string name) {
object value;
return _state.TryGetValue(name, out value) ? (T)value : default(T);

View File

@@ -95,6 +95,10 @@ namespace Orchard.Environment {
return _componentContext.Resolve<T>();
}
public override bool TryResolve<T>(out T service) {
return _componentContext.TryResolve(out service);
}
public override T GetState<T>(string name) {
var resolver = _stateResolvers.GetOrAdd(name, FindResolverForState<T>);
return (T)resolver();
@@ -141,6 +145,10 @@ namespace Orchard.Environment {
public TService Resolve<TService>() {
return WorkContext.Resolve<TService>();
}
public bool TryResolve<TService>(out TService service) {
return WorkContext.TryResolve(out service);
}
}
class ThreadStaticScopeImplementation : IWorkContextScope {
@@ -168,6 +176,10 @@ namespace Orchard.Environment {
public TService Resolve<TService>() {
return WorkContext.Resolve<TService>();
}
public bool TryResolve<TService>(out TService service) {
return WorkContext.TryResolve(out service);
}
}
}
}

View File

@@ -17,5 +17,6 @@ namespace Orchard {
public interface IWorkContextScope : IDisposable {
WorkContext WorkContext { get; }
TService Resolve<TService>();
bool TryResolve<TService>(out TService service);
}
}

View File

@@ -6,6 +6,7 @@ using Orchard.Themes;
namespace Orchard {
public abstract class WorkContext {
public abstract T Resolve<T>();
public abstract bool TryResolve<T>(out T service);
public abstract T GetState<T>(string name);
public abstract void SetState<T>(string name, T value);