mirror of
https://github.com/OrchardCMS/Orchard.git
synced 2025-10-15 03:25:23 +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();
|
||||
}
|
||||
|
||||
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);
|
||||
|
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -17,5 +17,6 @@ namespace Orchard {
|
||||
public interface IWorkContextScope : IDisposable {
|
||||
WorkContext WorkContext { get; }
|
||||
TService Resolve<TService>();
|
||||
bool TryResolve<TService>(out TService service);
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user