Nie mogę znaleźć żadnych artykułów ani linków do tego jak to zrobić i wydaje się, że jest to oczywisty problem (np. gdy nie masz kodu źródłowego lub chcesz używać istniejących typów nie napisanych dla MEF w umyśle)Jak eksportować typ do MEF bez atrybutu Eksportuj? (np. programowo)
Odpowiedz
Jeśli szukasz, aby dodać istniejącą instancję obiektu do kontenera, można użyć metody CompositionContainer.ComposeExportedValue
:
container.ComposeExportedValue<MyClass>(myClassInstance);
rzecz jesteś naprawdę szuka chociaż jest prawdopodobnie nowa konwencja oparty na programowaniu, który pozwala tworzyć części na podstawie konwencji nazewniczych, a nie atrybutów, ale ta funkcja jest dostępna tylko w .NET 4.5.
Przykład użycia (będzie wyeksportować każdy typ w myAssembly
który implementuje IController
jako IController
):
var registration = new RegistrationBuilder();
registration.ForTypesDerivedFrom<IController>()
.Export<IController>();
var catalog = new AssemblyCatalog(myAssembly, registration);
var container = new CompositionContainer(catalog);
Dobrym przykładem tego, jak korzystać z nowego modelu konwencji MEF za can be found here.
Mam nadzieję, że to pomoże.
Jeśli zaznaczysz interfejs z atrybutem InheritedExport, wszystkie moduły w tym katalogu są eksportowane, które realizują ten interfejs, czy są one oznaczone Export atrybutu lub nie.
Interfejs:
[InheritedExport]
public interface IContract { ... }
Moduł:
// No [Export] attribute
public class ModuleImplementation : IContract { ... }
Teraz MEF wstrzyknie moduł.
- 1. Czy MEF może eksportować/importować klasy statyczne?
- 2. Jak eksportować i importować usługi aplikacji za pomocą MEF?
- 3. Jak eksportować do pliku CSV bez powtarzania nagłówka i stopki?
- 4. Eksportuj DataTable do programu Excel z EPPlus
- 5. Eksportuj kolekcję MongoDB do CSV lub XLSX z Meteor/JavaScript
- 6. Generics eksportu w MEF
- 7. Jak eksportować przypadki testopia?
- 8. Eksportuj wartości z SQL Server do pliku txt
- 9. Dostęp do atrybutu "dane" bez jQuery
- 10. przekazać typ jako argument atrybutu
- 11. Jak eksportować i importować funkcje i wykonywać je za pomocą MEF?
- 12. mysqldump - Eksportuj tylko strukturę bez autoinkrementacji
- 13. Eksportuj tabelę HTML do Excela
- 14. Jak eksportować csv nodejs
- 15. jak ustawić typ wejściowy jako hasło do edytowania editekstowego programowo
- 16. Jak eksportować stronę html do formatu pdf?
- 17. Jak mogę eksportować problemy Jira do BitBucket
- 18. Jak eksportować wyjście Selenium do PHP?
- 19. Zapobieganie wyświetlaniu znaków (np. Wyłączanie atrybutu "echo" w termiach)
- 20. MEF vs. dowolne IoC
- 21. Eksportuj/importuj zawartość internetową w liferay
- 22. Jak mogę programowo określić mój typ procesora?
- 23. Jak określić typ bez parametrów typowego C# do celów sprawdzania?
- 24. Eksportuj plik crontab do pliku
- 25. Jak programowo odświeżyć pulpicie systemu Windows (np. F5) z C#?
- 26. Jak eksportować właściwy TSV?
- 27. Eksportuj JasperReport do PDF OutputStream?
- 28. Jak eksportować film z programu Powerpoint 2010?
- 29. Eksportuj repozytorium git do svn
- 30. Eksportuj odpowiedzi tkaniny do Excela
Doskonałe dzięki. Niestety, wygląda na to, że jest to tylko funkcja 4.5. – blue18hutthutt
Przypuszczam, że oparłeś swój przykład na wersji zapoznawczej? Nie ma metody 'Implements', [zamiast] (https://msdn.microsoft.com/en-us/library/system.componentmodel.composition.registration.registrationbuilder.aspx) istnieje wiele typów' ForType'/'ForTypes 'metody. – Stijn
@Stijn Masz rację, API zmieniło się od tego czasu - 'ForTypesDerivedFrom' zastąpił' Implements'. Odpowiednio zredagowałem swoją odpowiedź. –