diff --git a/src/Orchard.Tests/DisplayManagement/DefaultDisplayManagerTests.cs b/src/Orchard.Tests/DisplayManagement/DefaultDisplayManagerTests.cs index 5b68f19e2..5dff3b3e3 100644 --- a/src/Orchard.Tests/DisplayManagement/DefaultDisplayManagerTests.cs +++ b/src/Orchard.Tests/DisplayManagement/DefaultDisplayManagerTests.cs @@ -106,6 +106,10 @@ namespace Orchard.Tests.DisplayManagement { throw new NotImplementedException(); } + public override bool TryResolve(out T service) { + throw new NotImplementedException(); + } + public override T GetState(string name) { object value; return _state.TryGetValue(name, out value) ? (T)value : default(T); diff --git a/src/Orchard/Environment/DefaultWorkContextAccessor.cs b/src/Orchard/Environment/DefaultWorkContextAccessor.cs index 6db44bfde..5c7568f3b 100644 --- a/src/Orchard/Environment/DefaultWorkContextAccessor.cs +++ b/src/Orchard/Environment/DefaultWorkContextAccessor.cs @@ -95,6 +95,10 @@ namespace Orchard.Environment { return _componentContext.Resolve(); } + public override bool TryResolve(out T service) { + return _componentContext.TryResolve(out service); + } + public override T GetState(string name) { var resolver = _stateResolvers.GetOrAdd(name, FindResolverForState); return (T)resolver(); @@ -141,6 +145,10 @@ namespace Orchard.Environment { public TService Resolve() { return WorkContext.Resolve(); } + + public bool TryResolve(out TService service) { + return WorkContext.TryResolve(out service); + } } class ThreadStaticScopeImplementation : IWorkContextScope { @@ -168,6 +176,10 @@ namespace Orchard.Environment { public TService Resolve() { return WorkContext.Resolve(); } + + public bool TryResolve(out TService service) { + return WorkContext.TryResolve(out service); + } } } } diff --git a/src/Orchard/IWorkContextAccessor.cs b/src/Orchard/IWorkContextAccessor.cs index 523bfd01e..5887dc4d6 100644 --- a/src/Orchard/IWorkContextAccessor.cs +++ b/src/Orchard/IWorkContextAccessor.cs @@ -17,5 +17,6 @@ namespace Orchard { public interface IWorkContextScope : IDisposable { WorkContext WorkContext { get; } TService Resolve(); + bool TryResolve(out TService service); } } diff --git a/src/Orchard/WorkContext.cs b/src/Orchard/WorkContext.cs index 7b839b812..abb4255a0 100644 --- a/src/Orchard/WorkContext.cs +++ b/src/Orchard/WorkContext.cs @@ -6,6 +6,7 @@ using Orchard.Themes; namespace Orchard { public abstract class WorkContext { public abstract T Resolve(); + public abstract bool TryResolve(out T service); public abstract T GetState(string name); public abstract void SetState(string name, T value);