Articles of unità contenitore

Usare la fabbrica astratta come fabbrica di iniezione in Unity?

Ho una fabbrica astratta registrata per l’iniezione in alcune istanze del controller. Posso registrare quella fabbrica astratta e usarla come fabbrica di iniezione? Questo è quello che ho: public interface ILevelFactory { Levels Create(); } .RegisterType() .RegisterType(new InjectionFactory((c) => StaticLevelFactory.GetLevels())) Situazione desiderata: .RegisterType() .RegisterType(*** look up and use ILevelFactory ***) In breve, voglio sbarazzarmi di […]

Come configurare il container unity per fornire il valore del costruttore di stringhe?

Questa è la mia class di dad public class Dad { public string Name { get;set; } public Dad(string name) { Name = name; } } Questo è il mio metodo di prova public void TestDad() { UnityContainer DadContainer= new UnityContainer(); Dad newdad = DadContainer.Resolve(); newdad.Name = “chris”; Assert.AreEqual(newdad.Name,”chris”); } Questo è l’errore che sto […]

Unity non utilizza il costruttore predefinito della class

Ho questa class: public class Repo { public Repo() : this(ConfigurationManager.AppSettings[“identity”], ConfigurationManager.AppSettings[“password”]) { } public Repo(string identity,string password) { //Initialize properties. } } Ho aggiunto una riga a web.config in modo che questo tipo venga automaticamente creato dal contenitore Unity. ma durante l’esecuzione della mia domanda, ricevo questo messaggio di errore: “System.InvalidOperationException : the parameter […]

Configurazione di Unity per risolvere un tipo che accetta una dipendenza decorata con un parametro che varia con il tipo in cui viene iniettato

Questo è uno scenario di pattern decoratore abbastanza semplice, con la complicazione che il tipo decorato ha un parametro costruttore che dipende dal tipo in cui viene iniettato. Ho un’interfaccia come questa: interface IThing { void Do(); } E un’implementazione come questa: class RealThing : IThing { public RealThing(string configuration) { … implementation … } […]

Risolvi l’istanza con più costruttori usando l’unità

Mi piacerebbe creare un’istanza di una class usando unity dove la class ha due costruttori con lo stesso numero di parametri. Ecco l’istanziazione: _unityContainer.Resolve(new ParameterOverride(“gradeTypeStringFromXmlFile”, gradeTypeStringFromXmlFile)); E qui ci sono i costruttori: public GradeType(string gradeTypeStringFromXmlFile) { _gradeTypeStringFromXmlFile = gradeTypeStringFromXmlFile; } public GradeType(Enum.GradeType gradeType) { _gradeType = gradeType; } Se provo a farlo, ottengo un’eccezione dicendo […]

UnityContainer.Resolve o ServiceLocator.GetInstance?

Potrebbe sembrare una domanda stupida perché nel mio codice tutto funziona, ma ho registrato un singleton in questo modo con il mio contenitore Unity _ambientContainer : _ambientContainer.RegisterType(new ContainerControlledLifetimeManager()); Per evitare di utilizzare il mio campo locale, utilizzo: get { return ServiceLocator.Current.GetInstance(); } all’interno della mia proprietà get per ottenere un’istanza del mio object. In questo […]

Microsoft Unity: Issue With Resolve

Sto cercando di fare questo: container.Resolve (); Quando fa questo, sta per iniettare un’IDipendenza nell’object entity framework sottostante. Tuttavia, la dipendenza memorizzata all’interno del contenitore richiede un object di tipo DependencyValue, a cui viene fornito un valore da DependencyFactory. Per farla breve, il problema che sto riscontrando è che devo farlo, quando Unity crea l’istanza […]

Come posso utilizzare Unity con le classi interne?

Ho un’applicazione Web API e sto usando Unity per l’iniezione delle dipendenze. L’applicazione utilizza una libreria contenente un’interfaccia IDoStuff e una class che implementa l’interfaccia: internal interface IDoStuff { void DoSomething(); } internal class DoStuff : IDoStuff { public void DoSomething() { // Do some stuff } } La biblioteca ha anche una class pubblica […]

Rompere i principi SOLID nella realizzazione multipla di un’interfaccia

Sto affrontando un problema con l’inversione di dipendenza in un metodo di factory e sta anche rompendo il principio di Open Closed. Il mio codice appare come sotto i codici public interface IWriter { void WriteToStorage(string data); } public class FileWriter : IWriter { public void WriteToStorage(string data) { //write to file } } public […]

Cosa dovrebbe essere iniettato come parametro di There sotto i principi DI?

Sto cercando di capire quali oggetti dovrebbero essere iniettati in un object e che dovrebbero essere creati internamente. Se ho un List (come campo dati) che contiene le informazioni raccolte durante il runtime. sembra che dovrei iniziarlo nel lettore invece di iniettarlo. ma che dire di una class hardware che comunica attraverso una porta COM. […]