2016-11-09 26 views
0

LightInject IoC容器中是否有任何「ObjectFactory.GetInstance」類似物?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>(); 
    } 
} 
+0

問題是什麼?爲什麼你不能將一個對LightInject容器的引用存儲在'static'' public'字段中,這樣你就可以在屬性中訪問它了? – Steven

+0

請你舉個例子 – VoimiX

回答

0

我是LightInject的作者,我擔心你提供的信息太少,你正在嘗試做什麼。如果這與WCF有關,請在LightInject.Wcf回購(https://github.com/seesharper/LightInject.Wcf)中創建一個問題,並提供您正在嘗試執行的簡單「工作」示例。