2009-06-24 14 views
11

Mam scenariusz, w którym muszę uzyskać eksport z mojej instancji CompositionContainer, ale mam tylko typ do pracy z; Nie znam typu w czasie kompilacji, dlatego nie mogę pobrać wyeksportowanego obiektu w zwykły ogólny sposób.Uzyskiwanie eksportu z kontenera MEF z podaniem tylko instancji typu

Normalnie byłoby to zrobić:

_container.GetExportedObject<IMyType>(); 

Ale w moim przypadku, mam to:

Type someType = ... ; 
_container.HowDoIGetTheExport(someType); 

Jakieś pomysły?

Odpowiedz

20

znalazł odpowiedź:

var export = _container.GetExports(someType, null, null).FirstOrDefault(); 
+0

Tak, to jest podstawowa metoda, z której korzysta większość przeciążeń ogólnych, więc jest to najlepszy sposób, aby ją uzyskać. –

+7

Nie zapomnij o tym, czego szukasz w eksporcie. Wartość – Sam

1

Tworzenie połączenia dynamicznie przy użyciu Type.MakeGeneric .....

http://geekswithblogs.net/marcel/archive/2007/03/24/109722.aspx

+1

To mnie nie pomaga wywołać ogólną metodę na pojemniku. .. Nie sądzę, żebyś dobrze przeczytał moje pytanie. –

+0

Widzę, że masz konkretną odpowiedź - znakomitą. Moja odpowiedź jest bardziej ogólna w tym sensie, że od typu można skonstruować ogólne wywołanie metody w czasie wykonywania. Używamy tego do konstruowania wywołań, w których tylko interfejsy są znane podczas kompilacji, ale instancje uruchomieniowe mogą być zasilane ze źródeł zewnętrznych. –

Powiązane problemy