2016-11-09 3 views
0

Gibt es im LightInject-IoC-Container ein Analogon von "ObjectFactory.GetInstance"?ObjectFactory.GetInstance analog in LightInject IoC-Container

Zum Beispiel muss ich die Schnittstelle in meinem benutzerdefinierten Verhalten Attribut, das von IServiceBehavior geerbt wird, aber die Standardschnittstelle, die ich brauche, ist nicht gelöst.

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

Was ist das Problem? Warum können Sie keinen Verweis auf den LightInject-Container in einem 'statischen'' public'-Feld speichern, sodass Sie von Ihrem Attribut aus darauf zugreifen können? – Steven

+0

Könnten Sie bitte ein Beispiel geben? – VoimiX

Antwort

0

Ich bin der Autor des LightInject und ich habe Angst, dass Sie zu wenig Informationen darüber zur Verfügung haben, was Sie zu tun versuchen. Wenn dies mit WCF zu tun hat, erstellen Sie ein Problem in der LightInject.Wcf Repo (https://github.com/seesharper/LightInject.Wcf) und bieten ein einfaches "Arbeits" -Beispiel von dem, was Sie versuchen zu tun