【发布时间】:2016-11-09 13:06:52
【问题描述】:
LightInject IoC 容器中是否有“ObjectFactory.GetInstance”的类似物?
例如,我需要在继承自 IServiceBehavior 的自定义行为属性中解析接口,但默认情况下我需要的接口没有被解析。
public class MyInspectorAttribute : Attribute, IOperationBehavior, IParameterInspector, IServiceBehavior
{
public IExternalService ExternalServiceInstance { get; set; } //always null
public void AddBindingParameters(OperationDescription operationDescription, BindingParameterCollection bindingParameters) { }
public void ApplyClientBehavior(OperationDescription operationDescription, ClientOperation clientOperation) { }
public void ApplyDispatchBehavior(OperationDescription operationDescription, DispatchOperation dispatchOperation)
{
dispatchOperation.ParameterInspectors.Add(this);
}
public void Validate(OperationDescription operationDescription) { }
public void AfterCall(string operationName, object[] outputs, object returnValue, object correlationState)
{
Console.WriteLine("Operation {0} returned: result = {1}", operationName, returnValue);
}
}
public class CompositionRoot : ICompositionRoot
{
public void Compose(IServiceRegistry serviceRegistry)
{
serviceRegistry.Register<IService1, Service1>();
serviceRegistry.Register<IExternalService,ExternalService>();
}
}
【问题讨论】:
-
有什么问题?为什么不能在
staticpublic字段中存储对 LightInject 容器的引用,以便可以从属性中访问它? -
你能举个例子吗
标签: c# inversion-of-control light-inject