mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 19:54:57 +08:00
Add a TryResolve method for dependencies
--HG-- branch : dev
This commit is contained in:
@@ -106,6 +106,10 @@ namespace Orchard.Tests.DisplayManagement {
|
|||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool TryResolve<T>(out T service) {
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
public override T GetState<T>(string name) {
|
public override T GetState<T>(string name) {
|
||||||
object value;
|
object value;
|
||||||
return _state.TryGetValue(name, out value) ? (T)value : default(T);
|
return _state.TryGetValue(name, out value) ? (T)value : default(T);
|
||||||
|
@@ -95,6 +95,10 @@ namespace Orchard.Environment {
|
|||||||
return _componentContext.Resolve<T>();
|
return _componentContext.Resolve<T>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override bool TryResolve<T>(out T service) {
|
||||||
|
return _componentContext.TryResolve(out service);
|
||||||
|
}
|
||||||
|
|
||||||
public override T GetState<T>(string name) {
|
public override T GetState<T>(string name) {
|
||||||
var resolver = _stateResolvers.GetOrAdd(name, FindResolverForState<T>);
|
var resolver = _stateResolvers.GetOrAdd(name, FindResolverForState<T>);
|
||||||
return (T)resolver();
|
return (T)resolver();
|
||||||
@@ -141,6 +145,10 @@ namespace Orchard.Environment {
|
|||||||
public TService Resolve<TService>() {
|
public TService Resolve<TService>() {
|
||||||
return WorkContext.Resolve<TService>();
|
return WorkContext.Resolve<TService>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool TryResolve<TService>(out TService service) {
|
||||||
|
return WorkContext.TryResolve(out service);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class ThreadStaticScopeImplementation : IWorkContextScope {
|
class ThreadStaticScopeImplementation : IWorkContextScope {
|
||||||
@@ -168,6 +176,10 @@ namespace Orchard.Environment {
|
|||||||
public TService Resolve<TService>() {
|
public TService Resolve<TService>() {
|
||||||
return WorkContext.Resolve<TService>();
|
return WorkContext.Resolve<TService>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool TryResolve<TService>(out TService service) {
|
||||||
|
return WorkContext.TryResolve(out service);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -17,5 +17,6 @@ namespace Orchard {
|
|||||||
public interface IWorkContextScope : IDisposable {
|
public interface IWorkContextScope : IDisposable {
|
||||||
WorkContext WorkContext { get; }
|
WorkContext WorkContext { get; }
|
||||||
TService Resolve<TService>();
|
TService Resolve<TService>();
|
||||||
|
bool TryResolve<TService>(out TService service);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -6,6 +6,7 @@ using Orchard.Themes;
|
|||||||
namespace Orchard {
|
namespace Orchard {
|
||||||
public abstract class WorkContext {
|
public abstract class WorkContext {
|
||||||
public abstract T Resolve<T>();
|
public abstract T Resolve<T>();
|
||||||
|
public abstract bool TryResolve<T>(out T service);
|
||||||
|
|
||||||
public abstract T GetState<T>(string name);
|
public abstract T GetState<T>(string name);
|
||||||
public abstract void SetState<T>(string name, T value);
|
public abstract void SetState<T>(string name, T value);
|
||||||
|
Reference in New Issue
Block a user