Generyczna metoda i klasa

0

Witam,

Mam problem, otóż jest taki kod:

this.operationData = Kernel.Get<DictionaryConcept, IOperationData>();

Zwraca on obiekt o takim typie danych jaki podano w drugim parametrze. Pierwszy parametr to klucz, po którym szukam odpowiedniego obiektu. Jest to moje rozwiązanie wzorca wstrzykiwania zależności.

Kod ten jednak znajduje się w klasie nadrzędnej:

    public class IdentifyData
    {
        private IOperationData operationData;

        public IdentifyData()
        {
            this.operationData = Kernel.Get<DictionaryConcept, IOperationData>();
        }

Jak widać klasa jest ogólna, zaś w funkcji testowo podaję dokładną klasę, która dziedziczy po tej na skrypcie.
Jak mogę w metodzie "Kernel.Get" Podać typ danych aktualnej klasy.
Chodzi mi o coś takiego:

this.operationData = Kernel.Get<this.GetType(), IOperationData>();

Konkretnie pierwszy parametr jest zmienny i jest klasą dziedziczącą. Jak mogę przekazać dynamicznie informacje o tym metodzie generycznej?

Pozdrawiam.

0

Nie możesz. Musisz napisać metodę, która przyjmie argument typu Type.

0

Ok, bardzo dziękuję.

0

Inna sprawa że w takiej postaci:

 public class IdentifyData
    {
        private IOperationData operationData;
 
        public IdentifyData(IOperationData operationData)
        {
            this.operationData = operationData;
        }
    }

ten kod wygląda dużo lepiej. Oprócz wyglądu ma też wiele innych zalet, poszukaj i poczytaj jakich.

1
Czarny Mleczarz napisał(a):

Jest to moje rozwiązanie wzorca wstrzykiwania zależności.

to zaprzeczenie wzorca wstrzykiwania zależności, wygląda raczej na wzorzec service locatora
wstrzykiwanie zależności zwalnia właśnie od tego typu problemów

1 użytkowników online, w tym zalogowanych: 0, gości: 1