मैं अनुरोध करने वाले वर्ग के आधार पर इंटरफ़ेस के विशिष्ट कार्यान्वयन को वापस करने के लिए एक MVC5 प्रोजेक्ट में Autofac को कॉन्फ़िगर करने का प्रयास कर रहा हूं।

यह कुछ ऐसा है जो मैंने लारवेल ढांचे का उपयोग करके PHP के साथ बहुत कुछ किया है, जो नीचे की तरह एक समाधान प्रदान करता है:

$this->app->when(PhotoController::class)
          ->needs(Filesystem::class)
          ->give(function () {
              return Storage::disk('local');
          });

अब तक मेरा गुगलिंग छोटा हो गया है, अधिकांश उत्तरों का सुझाव है कि मैं या तो एक फैक्ट्री (कंटेनर को कॉल करना), या कंटेनर को स्वयं इंजेक्ट करता हूं, और वहां से मुझे जिस सेवा की आवश्यकता होती है उसे खींचती हूं।

क्या वास्तव में उपरोक्त के समान कुछ हासिल करने का कोई तरीका नहीं है?

0
Beevee 8 नवम्बर 2018, 19:18

1 उत्तर

सबसे बढ़िया उत्तर

सशर्त निर्भरता को पंजीकृत करने के विकल्प हैं, ऑटोफैक के साथ सबसे आसान नाम पंजीकरण (AFAIK) है:

builder.Register(c => new DiskStorage()).Named<IStorage>("disk");
builder.Register(c => new PhotoController(c.ResolveNamed<IStorage>("disk")));
2
Péter Csajtai 8 नवम्बर 2018, 16:50