【问题标题】:ObjectFactory.GetInstance analog in LightInject IoC containerLightInject IoC 容器中的 ObjectFactory.GetInstance 模拟
【发布时间】: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>();
    }
}

【问题讨论】:

  • 有什么问题?为什么不能在 static public 字段中存储对 LightInject 容器的引用,以便可以从属性中访问它?
  • 你能举个例子吗

标签: c# inversion-of-control light-inject


【解决方案1】:

我是 LightInject 的作者,恐怕您提供的有关您正在尝试做的事情的信息太少。如果这与 WCF 有关,请在 LightInject.Wcf 存储库 (https://github.com/seesharper/LightInject.Wcf) 中创建一个问题,并提供一个简单的“工作”示例来说明您正在尝试做什么

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 2014-04-29
    • 1970-01-01
    相关资源
    最近更新 更多